问题描述
给定一个不超过10 位的非负整数 N,请编写程序统计该整数各个数位上不同数字出现的次数。例如:给定 N=100311,则有 2 个 0,3 个 1,和 1 个 3。
输入说明
输入是一个不超过 10位的非负整数 N。
输出说明
对 N 中每一种不同的数字,以 D:M 的格式在一行中输出该位数字 D 及其在 N 中出现的次数M,要求按D 的升序输出。
输入样例
100311
输出样例
0:2
1:3
3:1
#include <stdio.h>
#include <math.h>
#include <string.h>
#include <stdlib.h>
int main()
{
int N, a[10]={0}, t;
int i, j, len;
scanf("%d", &N);
for(i=0;N!=0;i++){
a[i]=N%10;;
N/=10;
t=i;
}
int cnt[10]={0};
for(i=0;i<=t;i++){
switch(a[i])
{
case 0 : cnt[0]++; break;
case 1 : cnt[1]++; break;
case 2 : cnt[2]++; break;
case 3 : cnt[3]++; break;
case 4 : cnt[4]++; break;
case 5 : cnt[5]++; break;
case 6 : cnt[6]++; break;
case 7 : cnt[7]++; break;
case 8 : cnt[8]++; break;
case 9 : cnt[9]++; break;
}
}
for(i=0;i<=9;i++){
if(cnt[i]!=0)
printf("%d:%d\n",i, cnt[i]);
}
return 0;
}