【欢迎关注微信公众号:计算机黑科学大全,在对话框回复:PAT乙级真题】获取全部真题详解及代码示例
给定一个 k 位整数 N=d(k−1) 1 0 k − 1 10^{k−1} 10k−1+⋯+d(1) 1 0 1 10^1 101+d(0) (0≤d(i) ≤9, i=0,⋯,k−1, d(k−1) >0),请编写程序统计每种不同的个位数字出现的次数。例如:给定 N=100311,则有 2 个 0,3 个 1,和 1 个 3。
每个输入包含 1 个测试用例,即一个不超过 1000 位的正整数 N。
对 N 中每一种不同的个位数字,以 D:M 的格式在一行中输出该位数字 D 及其在N 中出现的次数 M。要求按 D 的升序输出。
题目来源:PAT乙级1021 作者:CHEN, Yue 单位:浙江大学
N为不超过 1000 位的正整数,显然不能用单个变量来存N的值,可用字符数组存入N的每一位;输入时遇到换行即输入结束;设置一个整型数组coun[10]来统计各位数字出现的次数;个数为0个的数字不输出。
小提示:请将以下代码保存为.cpp格式(C++程序)左右滑动代码可查看全部内容
#include <cstdio> #define MAXN 1001 using namespace std; int main() { char num[MAXN];//用字符数组存入输入的大数 int i = 0; num[i] = getchar(); while(num[i] != '\n'){//遇到换行即输入结束 i++; num[i] = getchar(); } i = 0; int coun[10] = {0};//统计数组 while(num[i] != '\n'){ int n = num[i] - '0';//字符转化为数字 coun[n]++; i++; } for(i = 0; i < 10; i++){ if(coun[i] != 0){//个数为0个的数字不输出 printf("%d:%d\n",i,coun[i]); } } return 0; }