这是一个很简单的问题,但同时这个程序又很不可靠,这个后面讲,给你讲结果怎么得出来的:
for(i=1;i<=3;i++)
a[i]=0;
对数组初始化,这个你应该懂吧,就是把a[1]到a[3]全部初始化为0。
scanf("%d",&x);这句不讲了。
主要讲这里
while(x!=-1){
a[x]+=1;
scanf("%d",&x);
}
这段就是当x不等于-1的时候执行while里面的两句,有点废话,举个例子,第一个输入的数据是3,那么根据while前面的那句scanf x就等于3,那么a[x]+=1就是a[3]+=1,因为之前全部初始化为0,所以此时a[3]=1,然后再次scanf给x赋值,第二个数据是1,那么就是a[1]+=1,
a[1]=1,当输入的数据x再次为3的时候又一个a[3]+=1,因为之前a[3]=1了,所以此时a[3]=2,所有数据同理。你数数输入的那串数据是不是一共有9个3?所以最后a[3]=9。当x不等于-1的时候一直重复上述循环。
出这个题的人很白痴,假如我输入x=6那么数组a就越界,所以说这个程序很不可靠。
你问这个题做什么我也不知道。。。。因为你给的那个题除了你自己写的问号就一个问号也没有了,没有问号的叫题吗?感觉你只给了已知条件。
题目抄错了
#include
main ( )
{int a[4], x, i;
for(i=1;i<=3;i++)
a=0; //这里应该是a[i]吧
scanf("%d",&x);
while(x!=-1) //当x!=-1输入x
{a[x]+=1; //使编号为x的那个数加1 即统计1,2,3出现的个数
// 如输入1 a[1]++;
scanf("%d",&x);}
for(i=1;i<=3;i++)
printf("a[%2d]=%4d\n",i,a/*这里也是a[i]吧*/);
}