只要将字符串简单的映射到数组里进行计数就可以了,
#include
#include
//
int main()
{
char number[]= "11992003747823682482932487928392"; //要计数的字符串
int i, num[10];
memset(num, 0, sizeof(int)*10); //将num初始化为0
for(i=0; number[i]; ++i) //映射,散列表
++num[number[i]-'0'];
for(i=0; i<10; ++i) //
printf("%d[%d]\n", i, num[i]);
return 0;
}
#include
#include
void main()
{
int count[10]={0}; //记录各个字符的个数
char number[] = "11992003747823682482932487928392";
int i=0;
while( number[i]!='\0' ) //判断是否遇到字符串结束符'\0'
{
switch (number[i++]) { //i++用于指向下一个字符
case '0': count[0]++; break; //字符0 的个数加1
case '1': count[1]++; break; //字符1 的个数加1
case '2': count[2]++; break;
case '3': count[3]++; break;
case '4': count[4]++; break;
case '5': count[5]++; break;
case '6': count[6]++; break;
case '7': count[7]++; break;
case '8': count[8]++; break;
case '9': count[9]++; break; //字符9 的个数加1
default: beak;
}
}
for ( i=0;i<10;i++ )
printf("%d[%d]\n" , i , count[i] );
}
#include
int main()
{
int num[10]={0};
char number[] = "11992003747823682482932487928392";
int i=0;
for ( i=0;number[i];i++ )
num[ number[i]-'0' ] ++ ;
for ( i=0;i<10;i++ )
printf("%d[%d]\n" , i , num[i] );
return 0;
}
如果可能出现的数的范围有限的话,可以用数组来解决
int counter[100];//只能解决0~99范围内的整数
for(int i=0;i
}
for(int i=0;i<100;i++){
if(counter[i])printf("%d出现%d次\n",i,counter[i]);
}
更复杂的情况(例如出现小数或特别大的数)就得用链表一类的容器来解决了