初始化多维数组,然后在C中打印内容

时间:2012-05-15 15:59:46

标签: c arrays multidimensional-array

#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 个答案:

答案 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;

相应地改变循环。