这个C++程序是什么意思?

来源:百度知道 编辑:UC知道 时间:2024/07/06 11:50:38
#include <iostream>
using namespace std;
int main()
{
int a[4],x,i;
for(i=1;i<=3;i++) a[i]=0;
cin>>x;
while(x!=-1)
{
a[x]+=1;
cin>>x;
}
for(i=1;i<=3;i++)
cout<<"a["<<i<<"]="<<a[i]<<endl;
return 0;
}
若输入数据如下:312322211333331122321232 -1 enter
输出的结果是:a[1]=6,a[2]=9,a[3]=9,怎样分析啊?

#include <iostream>
using namespace std;
int main()
{
int a[4],x,i; //定义长度为4的数组a ,整形 x ,i ;
for(i=1;i<=3;i++) a[i]=0;// i循环一下, 1-3 数组元素全部为0
cin>>x; //输入X
while(x!=-1) // 当输入不为-1时
{
a[x]+=1; // a[x]=a[x]+1
cin>>x; //输入X,这里要求你再次输入,输入数字之后在进行WHILE循环
}
for(i=1;i<=3;i++) //循环输出
cout<<"a["<<i<<"]="<<a[i]<<endl; //i=1时
return 0;
}

按你输入的数字往下推
a[3]=1
a[1]=1
a[2]=1
a[3]=2
a[2]=2
a[2]=3
a[2]=4
a[1]=2
a[1]=3
a[3]=3
..
..
..
..
1,2,3 没输入一次 a[1]a[2]a[3]加1 一直到 输入-1为止

仔细揣摩一下吧 呵呵。

额 没想到回答了这么长时间。 楼上都有两位答复了。机器上没装VS ,是否正确我就不验证了哈。 程序是这么读的。 结果也是我预测的。 不知道楼主得到的答复是否如此呢。。

312322211333331122321232 -1 enter
程序出错

cin>>x;
a[x]+=1;
此句有问题
输入31232221中数组为a【31232221】,很明显数组下标越界。导致访问的