c++语言统计数字个数

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

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值