#include<stdio.h>
int main()
{
int x,x1,a[10],i,n=0;
scanf("%d",&x);
for(i=0;i<10;i++)
a[i]=0;x1=x;
while(x1>=1)
{
x1/=10;
n++;
}x1=x;
for(i=0;i<n;i++)
{
if(x1%10==0)a[0]++;
if(x1%10==1)a[1]++;
if(x1%10==2)a[2]++;
if(x1%10==3)a[3]++;
if(x1%10==4)a[4]++;
if(x1%10==5)a[5]++;
if(x1%10==6)a[6]++;
if(x1%10==7)a[7]++;
if(x1%10==8)a[8]++;
if(x1%10==9)a[9]++;
x1/=10;
}
for(i=0;i<10;i++)
{
if(a[i]!=0)
printf("%d:%d\n",i,a[i]);
}
}
注意题目数值范围:不超过1000位正整数,用int
肯定不能表示所有的输入数据
#include <stdio.h>
#define N 1000
int main()
{
char a[N];
int c[10] = {};
scanf("%s", a);
const char *p = a;
while (*p)
c[*p++ - '0']++;
for (int i = 0; i < 10; i++)
if (c[i] > 0)
printf("%d:%d\n", i, c[i]);
return 0;
}