题目中提到:输入一个不超过 1000 位的正整数 N,故不能再用整型接收输入
一: 整型输入,数字不能太大
//仅适用于10位内的整数
#include <stdio.h>
int main()
{
int n, temp, i, a[10]={0};
scanf("%d", &n);
do {
temp=n%10;
a[temp]++;
n=n/10;
} while(n!=0); //0的个数存在a[0],1的个数存在a[1]... 此处用do...while考虑到输入0
for (i=0; i<=9; i++) if (a[i]!=0) printf("%d:%d\n", i, a[i]);
}
二:字符串输入,不超过1000位整数都行
#include <stdio.h>
#include <string.h>
int main()
{
char n[1010], c;
int count, temp, i, a[10]={0};
scanf("%s", n); //由于输入最大可能是1000位的数,用字符串来接收输入
count=strlen(n); //计算字符串长度
for (i=0; i<count; i++) {
c=n[i];
temp=c-'0'; //将字符型数字转化为整型数字
a[temp]++;
}
for (i=0; i<=9; i++) if(a[i]!=0) printf("%d:%d\n", i, a[i]);
}