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,看不懂啊。
答案是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"); }
#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"); }
第一个循环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.程序目的是对数组的各种数据计数。