【发布时间】:2019-12-21 19:50:24
【问题描述】:
大家好,感谢您抽出宝贵时间回答,
在练习时我遇到了一个问题,我需要输入一个二维数组(矩阵)。在练习中,它说当我完成输入一行(以进入下一行)时我应该输入 -1,并输入 -2 表示矩阵输入完成。
我尝试做这样的事情,我可以在我的大部分练习中使用它,但它不起作用,我似乎找不到原因。这是我的代码:
#include <stdio.h>
#include <stdlib.h>
int main()
{
int i,j,matrix[100][100];
int m,n;
for(i=0; i<100; i++) {
for(j=0; j<100; j++)
{
scanf("%d", &matrix[i][j]);
if(matrix[i][j]==-2) {
m=i+1; //After I enter -2, the matrix dimensions should be
n=j-1; // "m" and "n", but for some reason once I enter this
// if statement, "i" has to be incremented by 1
// and "j" has to be decremented by 1 for it to work
i=1000; // i use this to get out of nested loop
break;
}
if(mat1[i][j]==-1)
{
i++; // once the user inputs -1, I increase "i"(next row),
j=0; //and here I set the "column" count to 0
}
}
}
for(i=0; i<m; i++) {
for(j=0; j<n; j++) {
printf("%d ", matrix[i][j]);
}
printf("\n");
}
return 0;
}
所以,当我有这样的输入时:
1 2 3 -1
1 2 3 -1
1 2 3 -2
矩阵(打印在屏幕上)看起来像:
1 2 3
0 1 2
0 1 2
有谁知道为什么这不能按预期工作?好像没找到!
【问题讨论】:
-
至少变量 i 在外循环和 if 语句中增加了两次。
-
我应该如何从内循环跳转到矩阵的下一个“行”?
标签: c loops for-loop multidimensional-array scanf