用c语言统计数字出现的次数

这是代码
#include<stdio.h> /*包含头文件*/

int main() /*主函数main*/
{
int i,a[10]={1,5,6,8,2,1,4,5,2,5},b[10]={0}; /*定义数组*/
for(i=0;i<10;i++) /*循环数组中的每个值*/
b[a[i]]++; /*统计出现的次数*/
for(i=0;i<10;i++) /*从0-9依次循环*/
printf("%d出现的次数%d\n",i,b[i]); /*显示输出次数结果*/

return 0; /*程序结束*/
}
上面b[10]={0}了,那下面b[a[i]]++不永远都是0++就是1吗,到底是怎么统计出现次数的看不明白

b[a[i]]++; a[i] 是数组元素,数值在0-9范围内,所以b[a[i]] 总在 b[0]到b[9]之间。
b[] 已初始化为 0。
b[a[i]]++; 是 b[a[i]]=b[a[i]]+1; 它是累加器。
可以看成: x=a[i]; b[x]=b[x]+1; 第一次 b[x]++变1,第二次 b[x]++变2, 第三次 b[x]++变3。 例如 i=1,7,9 时 x=5,b[5] 累加3次变3。 这样就统计出5出现的次数了。
温馨提示:答案为网友推荐,仅供参考
第1个回答  2018-08-15
咋能永远是0++?是b[a[i]]++,不是b[i]++。
当前a[i]为1,所以b[1]++为1。同理,5,6,8,2都是;

然后a[i]为1,所以b[1]++为2。则表示1出现了两次。
相似回答