#include <stdio.h>
int main (void)
{
int weiners[3][2] = {
{5, 10, 8},
{8, 4, 7},
{3, 1, 2},
{0, 7, 9}
};
int x,y;
printf("Weiners:\n_______\n");
for(x=0;x<=3;++x){
for(y=0;y<=2;++y){
printf("%i, ", weiners[x][y]);
}
printf("\n");
}
return 0;
}
这只是为了简单地创建一个小的多维数组,然后使用循环来打印内容。它正确格式化,前三列是正确的,后面的数字是非常不正确的。我不确定这里有什么问题。
答案 0 :(得分:2)
您正在定义int[3][2]
,并使用4 x 3项目对其进行初始化,因此,当循环达到第6个值后,最后的项目将不确定。
gcc抱怨它:
array.c: In function `main':
array.c:7: warning: excess elements in array initializer
array.c:7: warning: (near initialization for `weiners[0]')
array.c:8: warning: excess elements in array initializer
array.c:8: warning: (near initialization for `weiners[1]')
array.c:9: warning: excess elements in array initializer
array.c:9: warning: (near initialization for `weiners[2]')
array.c:10: warning: excess elements in array initializer
array.c:10: warning: (near initialization for `weiners[3]')
array.c:10: warning: excess elements in array initializer
array.c:10: warning: (near initialization for `weiners')
答案 1 :(得分:1)
您的数组声明不正确(它是4x3而不是3x2):
int weiners[4][3] = {
{5, 10, 8},
{8, 4, 7},
{3, 1, 2},
{0, 7, 9}
};
或者,您可以使用实际为3x2(而不是4x3)的数组,然后修复for循环以使用匹配的索引:
for(x=0;x<3;++x) {
for(y=0;y<2;++y) {
答案 2 :(得分:1)
你的阵列必须是[4] [3]。
答案 3 :(得分:0)
您提供的行数和列数错误的格式为: -
int array[rows][colums]
此处row = 4且columns = 3;
相应地改变循环。