#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");
}
举个例吧
比如i=2,s[2]=3, 那么 c[s[2]]就是c[3] 又因为c[5]={0}, c[3]也是=0,c[3]++执行完 就是c[3]=1这样
用绘画板写执行顺序给你看看吧
就这样依次类推知道i=11
通俗的说 就是S[]数组的值作为C数组的序号从而 进行C数组序号对应的值自加
c[s[i]]++是对数组与数组下标的操作运算。可分为如下几步进行理解:
int a, b;下面通过举例来具体说明:
int s[] = {9, 3, 2, 5};
int c[] = {3, 2, 12, 4, 6};
int i = 2;
int b = c[s[i]]++; // b=13
解释如下:
c[s[i]]++ = c[s[2]]++ = c[2]++ = 12++ = 12+1=13,即:
首先,s[i]=s[2]=2
之后,c[2]=12
最后,c[2]++ = 12+1=13