3
#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;

}

这只是为了简单地创建一个小的多维数组,然后使用循环打印内容。它的格式正确,前三列是正确的,后面的数字非常不正确。我不确定这里有什么问题。

http://i.stack.imgur.com/TSX2M.png

4

4 回答 4

2

您正在定义 aint[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')
于 2012-05-15T16:04:13.347 回答
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) {
于 2012-05-15T16:02:13.080 回答
1

您的数组需要是 [4][3]。

于 2012-05-15T16:04:16.263 回答
0

你给出了错误的行数和列数,给出的格式是:-

int array[rows][colums]

这里行=4,列=3;

相应地更改循环。

于 2012-05-15T16:06:35.993 回答