在二维数组中显示矩阵

时间:2013-08-31 19:06:58

标签: c

我是c的新手并试图以矩阵形式显示数组。我已经看过教程,但是大多数都处理for循环以在二维数组中应用矩阵概念。我正在使用while循环并以我的方式检查它。它虽然以矩阵形式显示,但它没有显示准​​确的输出。如果我插入数字1,2 ..,9,它必须在下面的表格中显示:

1 2 3
4 5 6
7 8 9

但它显示为:

1 2 4
4 5 7
7 8 9

我无法理解为什么会这样。

#include<stdio.h>
#include<conio.h>

void main()
{

    int i=0,j=0;
    int arr[2][2];
    clrscr();
    while(i<=2)
    {
        j=0;
        while(j<=2)
        {
            scanf("%d",&arr[i][j]);
            j++;
        }
        i++;
    }
    i=0;
    while(i<=2)
    {
        j=0;
        while(j<=2)
        {
            printf("%d ",arr[i][j]);

            //printf("%c",k);
            j++;
            //k++;
        }
        printf("\n");
        i++;
    }
    printf("%d",arr[0][2]);
    getch();

2 个答案:

答案 0 :(得分:4)

你只需要以正确的方式声明二维数组,就像这样存储9个元素

int arr[3][3];  //3x3 =9 elements

你被宣布为arr [2] [2]。这是二维数组,存储四个元素2x2 = 4

答案 1 :(得分:1)

似乎,您使用的是类似IDE的TurboC ++,但大多数其他IDE(如codeblocks和Linux gccg++编译器都不支持conio.h头文件其功能如clrscr()getch(),这使您的代码不那么便携。

你的数组大小不符合你的 3d矩阵的要求,你得到的模式只是巧合,在我的linux平台上它给了我这个,当我试图设置数组大小arr[2],[2]

1 2 4
4 5 1
2 1 134513968

你得到的问题是因为你的数组较小,而不是因为你的while循环。

试试这个,
此代码初始化大小为arr[3][3]的数组,这将解决您的问题。

#include<stdio.h>

int main()
{

    int i=0,j=0;
    int arr[3][3];
    while(i<=2)
    {
        j=0;
        while(j<=2)
        {
            scanf("%d",&arr[i][j]);
            j++;
        }
        i++;
    }
    i=0;
    while(i<=2)
    {
        j=0;
        while(j<=2)
        {
            printf("%d ",arr[i][j]);

            //printf("%c",k);
            j++;
            //k++;
        }
        printf("\n");
        i++;
    }
    printf("%d",arr[0][2]);
return 0;
}