0

我正在编写一个使用 5x5 数组的程序,但实际上我想出了一个错误。
为了找到它,我尝试简化程序,并改为编写另一个程序,我只想使用数组简单地显示数字 1 到 25。

#include <iostream>
#include <conio.h>
using namespace std;
main()
{
long int a[4][4];
int m=1;
for(int i=0;i<5;i++)
{for(int j=0;j<5;j++)
{a[i][j]=m;

m=m+1;
}
}

for(int i=0;i<5;i++)
{for(int j=0;j<5;j++)
{
cout<<a[i][j]<<" ";
}
cout<<endl;
}
getch();
}

我实际上得到的是:

1  2  3  4  6
6  7  8  9  11
11 12 13 14 16
16 17 18 19 21
21 22 23 24 25

但是,当我尝试不同的事情并在cout<<a[i][j];后面a[i][j]=m;加上并删除第二部分时,我得到了正确的结果。
我在这里错过了什么吗?

4

3 回答 3

4

您的数组是 4 x 4,但您将其视为 5 x 5。您的代码具有未定义的行为。你的循环应该只计算到i < 4and j < 4,或者你需要将你的数组声明为long int a[5][5];.

顺便说一句,main应该有一个返回类型,它应该是int. 其他任何东西都是非标准的。

于 2013-08-24T13:43:42.493 回答
1

当您声明 a[4][4] 时,它实际上是在创建一个 4X4 矩阵,该矩阵是一个最多可以包含 16 个值的矩阵,方括号中的数字是指数组的大小。大小在人类计数时给出,例如 1,2,3,4... 并且程序开始存储输入的索引值从 0 开始。所以从这里你可以得出结论

a[ 1 ](我们看到或想到的)对于计算机来说是 a[0]

a[2](我们看到或想到的)对于计算机来说是 a[1]

a[3](我们看到或想到的)对于计算机来说是 a[2]

等等...

在您的代码更改中

    a[4][4]

    a[5][5]
于 2013-08-24T14:56:21.380 回答
0
long int a[4][4];

这是一个 4x4 数组。

于 2013-08-24T13:45:39.827 回答