#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,看不懂啊。
最新回答
心事过重

2024-10-01 13:53:07

答案是C
分析
#include <stdio.h>
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");
}
何必纠缠

2024-10-01 07:20:54

#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循环,所做的工作就是把数组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");
}
长双眼皮的鱼

2024-10-01 09:37:14

第一个循环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.
程序目的是对数组的各种数据计数。
月藏星匿

2024-10-01 15:56:59

s[i]在这里就可以看作是数组c的下标,每运行一次,都对应相应的c的下标,所以,只需要查下在S中的1,2,3,4的个数就是最后的答案
选择悲伤

2024-10-01 19:14:53

这段程序的实质就是输出数组s中有几个1,有几个2, 有几个3, 有几个4