请编写程序统计每种不同的个位数字出现的次数。例如:给定 N=100311,则有 2 个 0,3 个 1,和 1 个 3。
输入格式:
每个输入包含 1 个测试用例,即一个不超过 1000 位的正整数 N。
输出格式:
对 N 中每一种不同的个位数字,以 D:M 的格式在一行中输出该位数字 D 及其在 N 中出现的次数 M。要求按 D 的升序输出。
输入样例:
100311
输出样例:
0:2
1:3
3:1
#include<stdio.h>
#pragma warning(disable:4996)//在VS2019要避免scanf返回值被忽略这种东西,懂的都懂
#define VMAX 1001
int main()
{
int a[10] = { 0 }, i = 0, b[VMAX];
int j=0, sig;
p = b;
while (scanf("%1d", &b[i]) != EOF)//EOF在vc2019中需要重复三次“回车+‘ctrl+z’”
i++;//输入的数据存入数组b中
sig = i;//sig作为数组最大值
for (i = 0; i < 10; i++) {//外层循环判断从0到9每个数字,各对整个b数组循环一次
for (j=0;j<sig; j++) {//对数组b循环,
if (b[j] == i)//取到对应的数字,数组a就做好记录
a[i]++;
}
}
for (i = 0; i < 10; i++) {//按照格式输出数组a就能得到最终结果
if (a[i] == 0) continue;
printf("%d:%d\n", i, a[i]);
}
return 0;
}