1021. 个位数统计 (15)

来源:互联网 发布:麒麟970与骁龙835知乎 编辑:程序博客网 时间:2024/04/21 00:33

给定一个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:21:33:1
#include "iostream"#include "string"using namespace std;int main(){string N;cin >> N;int length;int flag0, flag1, flag2, flag3, flag4, flag5, flag6, flag7, flag8, flag9;flag0 = flag1 = flag2 = flag3 = flag4 = flag5 = flag6 = flag7 = flag8 = flag9 = 0;int c0, c1, c2, c3, c4, c5, c6, c7, c8, c9;c0 = c1 = c2 = c3 = c4 = c5 = c6 = c7 = c8 = c9 = 0;length = N.length();for (int  i = 0; i < length; i++){switch (N[i]){case '0':flag0 = 1;c0++;break;case '1':flag1 = 1;c1++;break;case '2':flag2 = 1;c2++;break;case '3':flag3 = 1;c3++;break;case '4':flag4 = 1;c4++;break;case '5':flag5 = 1;c5++;break;case '6':flag6 = 1;c6++;break;case '7':flag7 = 1;c7++;break;case '8':flag8 = 1;c8++;break;case '9':flag9 = 1;c9++;break;default:break;}}if (flag0){cout << "0:" << c0 << endl;}    if (flag1){cout << "1:" << c1 << endl;} if (flag2){cout << "2:" << c2 << endl;}     if (flag3){cout << "3:" << c3 << endl;}if (flag4){cout << "4:" << c4 << endl;} if (flag5){cout << "5:" << c5 << endl;} if (flag6){cout << "6:" << c6 << endl;} if (flag7){cout << "7:" << c7 << endl;} if (flag8){cout << "8:" << c8 << endl;} if (flag9){cout << "9:" << c9 << endl;}return 0;}
Aden:好吧,我承认这个写的太繁琐了。根本不必要那么麻烦。。。
#include <stdio.h>#include <string.h>int main(){int num[10], i;char ch;memset(num, 0, sizeof(num));while ( (ch = getchar()) != '\n' ){num[ch-'0']++;}for ( i=0; i<10; i++ ){if ( num[i] )printf("%d:%d\n", i, num[i]);}return 0;}


                                             
0 0