08年4月C语言真题求详解

来源:百度知道 编辑:UC知道 时间:2024/07/02 08:25:56
(31)有以下程序
#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
本人菜鸟,需要详细答案!!!拜谢大侠!!

第一个循环:for(i=0;i<12;i++) c[s[i]]++;{
c[1]++;c[2]++;c[3]++;
c[4]++;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]);{
c[1]=4
c[2]=3
c[3]=3
c[4]=2

所以选择:C!

选B

答案:C) 4 3 3 2

数组元素s[i]作为数组c[5]的索引值,当s[i]分别为1、2、3、4时,c[1],c[2],c[3],c[4]的值分别后自增加1

数组s[12]中分别有4,3,3,2个1,2,3,4,所以答案为C

分析循环for(i=0;i<12;i++) c[s[i]]++,
i=0;
s[0]=1;c[s[0]]++=c[1]++;c[1]=1;
i=1;
s[1]=2;c[s[1]]++=c[2]++;c[2]=1;
i=2;
s[2]=3;c[s[2]]++=c[3]++;c[3]=1;
i=3;
s[3]=4;c[s[3]]++=c[4]++;c[4]=1;
i=4;
s[4]=4;c[s[4]]++=c[4]++;c[4]=2;
i=5;
s[5]=3;c[s[5]]++=c[3]++;c[3]=2;
i=6;
s[6]=2;c[s[6]]++=c[2]++;c[2]=2;
i=7;
s[7]=1;c[s[1]]++=c[1]++;c[1]=2;
i=8;
s[8]=1;c[s[8]]++=c[1]++;c[1]=3;
i=9;
s[9]=1;c[s[9]]++=c[1]++;c[1]=4;
i=10;
s[10]=2;c[s[10]]++=c[2]++;c[2]=3;