当以下程序执行时,以下输入(从cin读取):

1 1 1 1 2 1 1 1 1 1 1 1 1 1 1 1


输出令人惊讶:

1 1 1 2 2 1 1 1 1 1 1 1 1 1 1 1

#include<iostream>
using namespace std;
int main()
{
    int arey[3][3];
    int i,j;
    for(j=0;j<=3;j++)
    {
        for(i=0;i<=3;i++)
        {
            cin>>arey[j][i];
        }
    }
    arey[0][0]=1;
    arey[3][3]=1;
    i=0,j=0;
    for(j=0;j<=3;j++)
    {
        for(i=0;i<=3;i++)
        {
            cout<<arey[j][i];
        }
    }
    return 0;
}


有人可以解释我应该改变什么以获得与输入相同的输出吗?

最佳答案

数组使用基于0的索引,因此您的索引的有效范围

int arey[3][3];

0 <= i < 30 <= j < 3

因此,您需要将for循环中的条件更改为严格<而不是<=

09-07 04:50