当前位置: 代码迷 >> 综合 >> PAT 1021 个位数统计
  详细解决方案

PAT 1021 个位数统计

热度:23   发布时间:2023-12-01 17:18:15.0

给定一个 k 位整数 N=dk?1?10k?1+?+d1?101+d0? (0≤di?≤9, i=0,?,k?1, dk?1?>0),请编写程序统计每种不同的个位数字出现的次数。例如:给定 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>
int main(){int j,i,n=0,nums[10]={0};char num;while(1){scanf("%c",&num);if(num=='\n') break;num=num-'0';nums[num]++;}for(i=0;i<10;i++){if(nums[i]!=0){printf("%d:%d\n",i,nums[i]);	}}return 0;
}

利用scanf的输入缓冲区,将每个字符转化为数字再进行储存。

最后合并输出。

何为缓冲区,参考c语言--scanf()函数与输入缓冲区的那些事 - _梁小猪 - 博客园 (cnblogs.com)