Problem2:
题目描述:
输入一组数据,统计每个数出现的次数,并按照数字的大小进行排序输出。
输入:
输入20个数字,数字之间用空格隔开。
输出:
统计每个数字出现的次数,并按数字的大小输出数字及其出现的次数.
样例输入:
20
9 8 5 1 7 2 8 2 9 10 1 7 8 9 5 6 9 0 1 9
样例输出:
0:1
1:3
2:2
5:2
6:1
7:2
8:3
9:5
10:1
提示:类似于词频分析,简化了而已!
#include <stdio.h> #include <algorithm> using namespace std; #define N 100000 struct Nm{ int num; //数字 int count; //个数 bool operator < (const Nm &A)const{ //重载小于 return num < A.num; } }Num[N]; int main(){ int n; int count = 0; while(scanf("%d",&n) != EOF){ if(n == 0) break; int tmp; int j; int i; for( i = 0; i < n; i++){ scanf("%d",&tmp); for( j = 0; j < count; j++){ if(tmp == Num[j].num){ //若等于前面的某个数,则个数加一 Num[j].count++; break; } } if(j >= count){ //若为新的数,则插入新节点 Num[j].num = tmp; Num[j].count = 1; count++; } } sort(Num,Num+count); //按数字排序 for( i = 0; i < count; i ++) //输出 printf("%d:%d\n",Num[i].num,Num[i].count); printf("\n"); } return 0; } 转载来自: 牟尼的专栏 http://blog.csdn.net/u012027907