C语言中 c[s[i]]++ 怎么理解?

#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这样

用绘画板写执行顺序给你看看吧

+1表示执行c[s[i]]++

就这样依次类推知道i=11

 

通俗的说  就是S[]数组的值作为C数组的序号从而 进行C数组序号对应的值自加

温馨提示:答案为网友推荐,仅供参考
第1个回答  推荐于2017-09-07

c[s[i]]++是对数组与数组下标的操作运算。可分为如下几步进行理解:

int a, b;
a = s[i];  // 将数组c的下标赋值给变量a
c[s[i]] = c[a];  
b = c[a]; // 将数组c的第a+1个元素值赋值给变量b
c[s[i]]++ = 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

第2个回答  2013-09-20
这个就是判断s中0 1 2 3 4 出现的次数
c[5]={0}这个赋值c全部为零
c[s[i]]这个就是让s[i]的数据党c的下标
++就好说了,就是c的那个加上1
如党i是3的时候,s[i]是4,那么c[4]就自加1本回答被网友采纳
第3个回答  2013-09-20
s[i]是数组s[]中的第i个元素,比如:s[2]=3;c[]也是一个数组,只不过数组中所有的元素都是0;c[s[i]],就是数组c中的第s[i] 个元素,如果i=2,则s[i]=3,c[3]=0;c[s[i]]++,就是该元素加1,c[3]++=1;
第4个回答  2013-09-20
c[s[i]]++; //要分开来看

s[i] 的值,也就是数组定义的值,如果 i 等于 2,那么是s[2] = 3;

对于 c[s[i]]++; 来说,也就变成了 c[ 3 ]++;

明白了吗
相似回答