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