Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/loops/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在C中的帧中输入二维数组_C_Loops_Multidimensional Array - Fatal编程技术网

在C中的帧中输入二维数组

在C中的帧中输入二维数组,c,loops,multidimensional-array,C,Loops,Multidimensional Array,我试图让用户输入一个2d数组,然后它会以类似帧的形式打印出该数组,我编写了代码,它可以工作,但当要打印数组时,程序只会反复打印用户输入的第一行内容,如下所示: Enter size 3 Enter Array 1 2 3 4 5 6 7 8 9 Your Array: a b c # # # # # 1 # 1 2 3 # 2 # 1 2 3 # 3 # 1 2 3 # # # # # # 这是我的代码:我觉得这是一个小错误,但我就是找不到 #i

我试图让用户输入一个2d数组,然后它会以类似帧的形式打印出该数组,我编写了代码,它可以工作,但当要打印数组时,程序只会反复打印用户输入的第一行内容,如下所示:

Enter size
3
Enter Array
1 2 3
4 5 6
7 8 9

Your Array:
     a b c    
   # # # # # 
1  # 1 2 3 # 
2  # 1 2 3 # 
3  # 1 2 3 # 
   # # # # # 
这是我的代码:我觉得这是一个小错误,但我就是找不到

#include <stdio.h>

int main(){
    int i,j;
    int y,x;
    int n,a,num,readNum,z;
    char ch;

    ch = 'a';
    num = 1;

    printf("Enter size\n");
    readNum = scanf("%d",&z);

    int Board[z][z];
    n = z+2;
    a = n+1;

    printf("Enter Array\n");
    for(x=0;x<z;x++){
        for(y=0;y<z;y++){
           readNum = scanf("%d",&Board[x][y]);
        }
    }

    printf("\nYour Array:\n");
    x=0;
    for(i=0;i<a;i++){
        y=0;
        for(j=0;j<a;j++){
            if(((i==0)&&(j==1))||
               ((i==1)&&(j==0))||
               ((i==0)&&(j==n))||
               ((j==0)&&(i==n))){
                printf("   ");
            }
            if ((i==0)&&(j==0)){
                printf("  ");
            }
            if ((i==0 && (j>=2 && j<n))){
                printf("%c ",ch);
                ch++;
            }
            if ((j==0) &&(i>=2 && i<n)){
                printf("%d  ",num);
                num++;
            }
            if(((i==1) && (j>=1 && j<=n))||
               ((i==n) && (j>=1 && j<=n))||
               ((j==1) && (i>1  && i<n ))||
               ((j==n) && (i>1  && i<n ))){
                printf("# ");
            }
            if((i>1 && i<n) && (j>1 && j<n)){ 
                printf("%d ",Board[x][y]);
                y++;
            }
        }
        printf("\n");
    }
    return 0;
}
当你完成一行时,你需要增加x

解决方案很小:

            if((i>1 && i<n) && (j>1 && j<n)){ 
                printf("%d ",Board[x][y]);
                y++;
                if ((y%z) == 0)
                    x++;
            }
之后


你永远不会更改x。

看起来你好像没有更新x。打印星星行有什么问题;[打印星形,打印第0行,打印星形,换行;重复n行;]打印星形行;我试图通过每个循环增加x,但是它相对于j没有增加,所以数组只是打印出随机数,你知道我可以把它放在哪里吗?在printf之后插入x++\n。您可能需要使用-1或-2初始化x:我没有密切注意这个特定的问题。我可以把x++放在什么地方使其工作?因为我尝试过,但它只是在printf之前打印随机数,从而破坏了数组\n;最后。它只打印帧中第一行的最后一行,其余的行是随机数抱歉,解决方案不好,请参阅更新的答案,我想您会喜欢的。@Henry James其余的行是随机数=>您是否尝试打印出板卡阵列的实际内容?
#include <stdio.h>

int main(){
    int i,j;
    int y,x;
    int n,a,num,readNum,z;
    char ch;

    ch = 'a';
    num = 1;

    printf("Enter size\n");
    readNum = scanf("%d",&z);

    int Board[z][z];
    n = z+2;
    a = n+1;

    printf("Enter Array\n");
    for(x=0;x<z;x++){
        for(y=0;y<z;y++){
           readNum = scanf("%d",&Board[x][y]);
        }
    }

    printf("\nYour Array:\n");
    x=0;
    for(i=0;i<a;i++){
        y=0;
        for(j=0;j<a;j++){
            if(((i==0)&&(j==1))||
               ((i==1)&&(j==0))||
               ((i==0)&&(j==n))||
               ((j==0)&&(i==n))){
                printf("   ");
            }
            if ((i==0)&&(j==0)){
                printf("  ");
            }
            if ((i==0 && (j>=2 && j<n))){
                printf("%c ",ch);
                ch++;
            }
            if ((j==0) &&(i>=2 && i<n)){
                printf("%d  ",num);
                num++;
            }
            if(((i==1) && (j>=1 && j<=n))||
               ((i==n) && (j>=1 && j<=n))||
               ((j==1) && (i>1  && i<n ))||
               ((j==n) && (i>1  && i<n ))){
                printf("# ");
            }
            if((i>1 && i<n) && (j>1 && j<n)){ 
                printf("%d ",Board[x][y]);
                y++;
                if ((y%z)==0)
                   x++;
            }
        }
        printf("\n");
    }
    return 0;
}
     printf("\nYour Array:\n");
     x=0;