C:填充矩阵

时间:2015-04-08 17:20:45

标签: c for-loop matrix

我试图用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]返回相同的值(虽然这里是适当的值)。

感谢您的帮助

编辑:添加声明。

4 个答案:

答案 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。 这是正确的。