Py小郑 2022-04-11 11:54 采纳率: 96.6%
浏览 47
已结题

C++无法读入的问题

这是我的代码,我一编译运行就连输入都没法输入,这是为啥?

#include <iostream>

using namespace std;

int main(){
    
    int n;
    int b[n][2];
    int a[n][n],cx,cy,mid;
    while (true){
        cin>>n;
        if (n==0) break;
        for (int i=0;i<=n/2;i++){
        for (int j=0;j<2;j++){
            b[i][j]=i*(j+1);
        }
    }
        if (n%2==0){
            cx=n/2-1,cy=n/2-1;
             mid=n/2;
        }
        else{
            cx=n/2,cy/2;
             mid=(n+1)/2;
        }

        for (int i=0;i<=n/2;i++){
            for(int j=0;j<=n/2;j++){
                int d=abs(i-cx)+abs(j-cy);
                for (int k=0;k<=n/2;k++){
                    if (d>=b[k][0]&&d<=b[k][1]){
                        a[i][j]=mid-k;
                        a[i][n-1-j]=a[i][j];
                        a[n-1-i][j]=a[i][j];
                    }
                }
                
        }
    }
    for (int i=0;i<n;i++){
        for (int j=0;j<n;j++){
            cout<<a[i][j]<<" ";
        }
    cout<<endl;
}
    
    }
    
    
    
    
    
    return 0;}
    


  • 写回答

2条回答 默认 最新

  • czy1219 2022-04-11 15:09
    关注

    添加初始值即可,否则随机选取的值是不可预料的,while循环也进不了!可以尝试打印一下未初始化的n值。

    #include <iostream>
    
    using namespace std;
    
    int main()
    {
    
        int n=0; // 添加初始值
        int b[n][2];
        int a[n][n], cx, cy, mid;
    
        
        while (true)
        {
           // cout<<"here"<<endl;
            cin >> n;
            if (n == 0)
                break;
            for (int i = 0; i <= n / 2; i++)
            {
                for (int j = 0; j < 2; j++)
                {
                    b[i][j] = i * (j + 1);
                }
            }
            if (n % 2 == 0)
            {
                cx = n / 2 - 1, cy = n / 2 - 1;
                mid = n / 2;
            }
            else
            {
                cx = n / 2, cy / 2;
                mid = (n + 1) / 2;
            }
    
            for (int i = 0; i <= n / 2; i++)
            {
                for (int j = 0; j <= n / 2; j++)
                {
                    int d = abs(i - cx) + abs(j - cy);
                    for (int k = 0; k <= n / 2; k++)
                    {
                        if (d >= b[k][0] && d <= b[k][1])
                        {
                            a[i][j] = mid - k;
                            a[i][n - 1 - j] = a[i][j];
                            a[n - 1 - i][j] = a[i][j];
                        }
                    }
                }
            }
            for (int i = 0; i < n; i++)
            {
                for (int j = 0; j < n; j++)
                {
                    cout << a[i][j] << " ";
                }
                cout << endl;
            }
        }
    
       return 0;
    
    }
    
    
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

问题事件

  • 系统已结题 4月19日
  • 已采纳回答 4月11日
  • 创建了问题 4月11日

悬赏问题

  • ¥15 乌班图ip地址配置及远程SSH
  • ¥15 怎么让点阵屏显示静态爱心,用keiluVision5写出让点阵屏显示静态爱心的代码,越快越好
  • ¥15 PSPICE制作一个加法器
  • ¥15 javaweb项目无法正常跳转
  • ¥15 VMBox虚拟机无法访问
  • ¥15 skd显示找不到头文件
  • ¥15 机器视觉中图片中长度与真实长度的关系
  • ¥15 fastreport table 怎么只让每页的最下面和最顶部有横线
  • ¥15 java 的protected权限 ,问题在注释里
  • ¥15 这个是哪里有问题啊?