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;て2番目の部分を削除したところ、正しくなりました。
ここで何か不足していますか?

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] を宣言すると、実際には最大 16 の値を含むことができる行列である 4X4 行列が作成されます。角括弧内の数字は配列のサイズを示しています。サイズは、人間が 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 に答える