C中2D数组的初始化不正确
我正在尝试为赋值构造一个2D数组。我已使用嵌套for循环使用scanf()构造2D数组:C中2D数组的初始化不正确,c,arrays,multidimensional-array,C,Arrays,Multidimensional Array,我正在尝试为赋值构造一个2D数组。我已使用嵌套for循环使用scanf()构造2D数组: int宽度; 内部高度; 扫描频率(“%d%d”、&宽度和高度); 整数数组[宽度][高度]; 对于(int i=0;i您的数组声明 int array[width][height]; 错误。外部循环从0到高度-1,但数组[i]只能执行 从0到width-1。这同样适用于内部循环。您交换了width 和高度在数组的声明中,它应该是 int array[height][width]; 6 3 1 3 5
int宽度;
内部高度;
扫描频率(“%d%d”、&宽度和高度);
整数数组[宽度][高度];
对于(int i=0;i您的数组声明
int array[width][height];
错误。外部循环从0到高度-1
,但数组[i]
只能执行
从0到width-1
。这同样适用于内部循环。您交换了width
和高度
在数组的声明中,它应该是
int array[height][width];
6 3
1 3 5 7 9 1
2 4 6 8 0 2
3 4 2 0 1 3
还要注意的是,对于矩阵
1 3 5 7 9 1
2 4 6 8 0 2
3 4 2 0 1 3
宽度为6,高度为3,因此应选择正确的输入
int array[height][width];
6 3
1 3 5 7 9 1
2 4 6 8 0 2
3 4 2 0 1 3
我编译并运行了以下代码:
#include <stdio.h>
int main(void)
{
int width;
int height;
scanf("%d %d",&width,&height);
int array[height][width];
for (int i=0;i<height;i++){
for (int j=0;j<width;j++){
scanf("%d",&array[i][j]);
}
}
printf("----------------\n");
for (int i=0;i<height;i++){
for (int j=0;j<width;j++){
printf("%d ", array[i][j]);
}
printf("\n");
}
}
如您所见,现在它读取正确。请参见您在循环中交换了width
和height
,或者执行int array[height][width]
或者您交换条件以获得快速回复。我交换了循环,但仍然有问题。输出现在是:135791 579124,所以仍然不正确,只是第2行的前4个数字现在不正确。检查我的答案,交换数组声明修复了问题。请参阅@callum202我怀疑有问题使用示例输入或显示代码。你能发布吗?注意,你说输入的大小是6 2
,但这会给你两行而不是三行。同样,你似乎给了它很多数字,所以可能是输入错误。@Steve谢谢Steve,Pablo正确地识别了问题。啊,太好了,这解决了问题。是的,我尝试了你的建议以前在数组初始化时忘记切换[height]和[width],现在可以了,非常感谢您的帮助!