题目描述
给定一个 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);//输入正整数Nint 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;
}