我是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();
答案 0 :(得分:4)
你只需要以正确的方式声明二维数组,就像这样存储9个元素
int arr[3][3]; //3x3 =9 elements
你被宣布为arr [2] [2]。这是二维数组,存储四个元素2x2 = 4
答案 1 :(得分:1)
似乎,您使用的是类似IDE的TurboC ++,但大多数其他IDE(如codeblocks
和Linux gcc
和g++
编译器都不支持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;
}