c语言问题...

来源:百度知道 编辑:UC知道 时间:2024/06/20 20:43:16
#include <stdio.h>
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(i=1;i<5;i++) printf(“%d”,c[i]);
printf(“\n”);
}
程序的运行结果是
A)1 2 3 4 B)2 3 4 4 C)4 3 3 2 D )1 1 2 3

要详细一点

c[s[i]]++; 这条语句的作用是当数组s中出现了以前出现过的数字的时候,就在数组c的下标为重复出现的数字上面加1.比方说4,4因为是重复出现了,所以,就是c[4]+1,这时候c[4]=0+1=1.以此类推其他的也一样。
最后输出的结果就是4332,这个结果的意思就是1出现了4次,2出现了2次,其他类推。

C 4332
解决问题的关键就在于要搞清楚c[s[i]]++
比如当i=0时 c[s[i]]++表示c[s[0]]++,而s[0]=1,故有c[s[0]]=c[1],c[1]=0,所以C〔1〕++=1,以些类推。

第一次:执行第一个for i=0,c[s[i]]即为c[s[0]]即c[1]++
第二次:执行第一个for i=1,c[s[i]]即为c[2]++ .....依次进行下去
意思就是 s中的数字就是c中的下标。每次执行一次,c对应的下标里的值就自加一次,s中有4个1,c[1]就自加4次。s中有3个2,c[2]就自加3次。。。。
所以答案就是C