我试图用for循环填充矩阵,但是我想出了一个问题,其中任何两个坐标x_0和y_0都是可互换的。为了强调这个问题,我将其简化为最基本的例子:
我填写以下2x2矩阵并将其打印在1,2(或数组内的[0] [1])中:
int matrix[1][1];
for(j=0; j<2; j++){
for(i=0; i<2; ++i){
scanf("%d", &matrix[j][i]);
}
}
printf("%d \n", matrix[0][1]);
但是它总是返回第三个输入的值,或[1] [0]。我原本以为我可能搞乱了我的for循环,但打印矩阵[1] [0]返回相同的值(虽然这里是适当的值)。
感谢您的帮助
编辑:添加声明。
答案 0 :(得分:4)
您需要将矩阵声明为2×2矩阵:
int matrix[2][2];
在声明矩阵时,数字声明矩阵的大小,而不是其最高索引(总是小于矩阵)。
答案 1 :(得分:2)
您似乎不满意分配索引,
int matrix[1][1]
分配1×1矩阵,
int matrix[2][2]
分配一个2×2矩阵,其中matrix[1][1]
是矩阵的实际 M 2,2 元素,因为的索引第一行,第一列是 0,0 。
答案 2 :(得分:1)
int matrix[1][1];
声明1×1阵列。但你使用它作为2×2。将其替换为int matrix[2][2];
答案 3 :(得分:-1)
好像它对我有用,看起来是正确的。
尝试声明像matrix [2][2];
当我运行它时,我输入1,2,3,4
打印matrix [0][1]
,产生2。
这是正确的。