对于具有预定义值的变量不执行相同的操作



为什么这两个应该相同的代码中有错误?

这个有效:

int N=4;
int M[N][N];
for(int i = 0; i < N; i++) {
for (int j = 0; j < N; j++) {
scanf("%d", &M[i][j]);
}
}

这个只读一行:

int i=0,j=0,N=4;
int M[N][N];
for(i; i < N; i++) {
for (j; j < N; j++) {
scanf("%d", &M[i][j]);
}
}

但是,如果在scanf函数的%d前面添加空格,它将读取两行。

您没有在每次迭代中将j重新初始化为零,您需要:

int i=0,j=0,N=4;
int M[N][N];
for(i = 0; i < N; i++) {
for (j = 0; j < N; j++) {
scanf("%d", &M[i][j]);
}
}
int i=0,j=0,N=4;
int M[N][N];
//for(i; i < N; i++) {
//for (j; j < N; j++) {
scanf("%d", &M[i][j]); // i = 0; j = 0
//}
//}

j++;
scanf("%d", &M[i][j]); // i = 0; j = 1
j++;
scanf("%d", &M[i][j]); // i = 0; j = 2
j++;
scanf("%d", &M[i][j]); // i = 0; j = 3
i++;
scanf("%d", &M[i][j]); // i = 1; j = 3
i++;
scanf("%d", &M[i][j]); // i = 2; j = 3

最新更新