答案是C
分析
#include
void main()
{
int s[12]={1,2,3,4,4,3,2,1,1,1,2,3},c[5]={0},i;
for(i=0;i<12;i++)c[s[i]]++; //s数组中有4外1,因此c[1]++执行4次,c[1]=4。
//同理c[2]=3,c[3]=3,c[4]=2
for(i=1;i<5;i++)printf("%d",c[i]); //输出c[1],c[2],c[3],c[4]即为4332。
printf("\n");
}
#include
main()
{
int s[12]={1,2,3,4,4,3,2,1,1,1,2,3},c[5]={0},i;
for(i=0;i<12;i++)c[s[i]]++;
这是一个单独的for循环,所做的工作就是把数组c的各项按照s数组的项为下标自增,
也就是c[1]++,c[2]++,c[3]++,c[4]++,c[3]++,c[2]++,c[1]++,c[1]++,c[1]++,c[2]++,c[3]++
for(i=1;i<5;i++)printf("%d",c[i]);
i从1开始,也就是第0个元素没有输出。输出的是c[1],c[2],c[3],c[4]也就是4,3,3,4
printf("\n");
}
第一个循环c[1]++,c[2]++,c[3]++,c[4]++,c[4]++,c[3]++,c[2]++,c[1]++,c[1]++,c[1]++,c[2]++,c[3]++,
c[0]=0,c[1]=4,c[2]=3,c[3]=3,c[4]=2,
第二个循环输出,0,4,3,3,2.
程序目的是对数组的各种数据计数。
s[i]在这里就可以看作是数组c的下标,每运行一次,都对应相应的c的下标,所以,只需要查下在S中的1,2,3,4的个数就是最后的答案
这段程序的实质就是输出数组s中有几个1,有几个2, 有几个3, 有几个4