题目:个位数统计
给定一个 k 位整数 N=dk−110k−1+⋯+d1101+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
解题思路:
由题可知,这是想要让我们将求出每位数字的出现次数,由于这个数值是一个小于1000位的正整数,所以我们可以利用1001位的数组将每个数字存入到数组中,这样可以方便检索每位数字,再创建一个数组用于存储0~9出现的次数,利用循环检索这个正整数,并将这个位上对应的数字作为下标的数组++,这样表示这个数字出现的次数+1,最终就可以得到每个数字出现的次数。
代码:
#include<iostream>
#define MAX 1001
using namespace std;
int main()
{
char A[MAX]; //存储输入的数据
cin>>A;
int B[11]={0}; //存储每个数字的出现次数
//得到每个数字的次数
for(int i=0;A[i] != '\0';i++)
{
switch(A[i])
{
case '0':B[0]++;break;
case '1':B[1]++;break;
case '2':B[2]++;break;
case '3':B[3]++;break;
case '4':B[4]++;break;
case '5':B[5]++;break;
case '6':B[6]++;break;
case '7':B[7]++;break;
case '8':B[8]++;break;
case '9':B[9]++;break;
}
}
//输出
for(int i=0;i<10;i++)
{
if(B[i] != 0)
{
cout<<i<<":"<<B[i]<<endl;
}
}
system("pause");
return 0;
}
标签:case,PAT,数字,++,乙级,break,次数,int,1021
From: https://blog.csdn.net/weixin_66512566/article/details/141024001