题目描述
给定一个 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
程序代码
#include<stdio.h>
#include<string.h>
int main(){
char b[1000];
scanf("%s",b);//输入正整数N
int a[10]={0};//数组a用来记录每一个数字出现的次数
int x1=strlen(b);//测量正整数N有多少位
int x;
for(int i=0;i<x1;i++){
x=b[i]-'0';
switch(x){//利用switch函数来统计每个数出现的次数
case 0:
a[0]++;
break;
case 1:
a[1]++;
break;
case 2:
a[2]++;
break;
case 3:
a[3]++;
break;
case 4:
a[4]++;
break;
case 5:
a[5]++;
break;
case 6:
a[6]++;
break;
case 7:
a[7]++;
break;
case 8:
a[8]++;
break;
case 9:
a[9]++;
break;
}
}
for(int i=0;i<10;i++){
if(a[i]==0) continue;//当这个数没有出现一次时,跳出本次循环
printf("%d:%d\n",i,a[i]);//输出每一个数对应出现的次数
}
return 0;
}