为什么这两个应该相同的代码中有错误?
这个有效:
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