C++ 众数问题(九度OJ 1057)

来源:互联网 发布:java自学视频推荐 编辑:程序博客网 时间:2024/06/07 03:44

题目描述:

输入20个数,每个数都在1-10之间,求1-10中的众数(众数就是出现次数最多的数,如果存在一样多次数的众数,则输出权值较小的那一个)。

输入:

测试数据有多组,每组输入20个1-10之间的数。

输出:

对于每组输入,请输出1-10中的众数。

样例输入:
5 1 5 10 3 5 3 4 8 6 8 3 6 5 10 7 10 2 6 2 
样例输出:
5

源代码:

#include <iostream>#include <cstdio>using namespace std;void fun(int a[],int t[]){    int i;    int maxt;    for(i=0;i<10;i++)    {        t[i]=0;    }    for(i=0;i<20;i++)    {        switch(a[i])        {            case 1:t[0]++;break;            case 2:t[1]++;break;            case 3:t[2]++;break;            case 4:t[3]++;break;            case 5:t[4]++;break;            case 6:t[5]++;break;            case 7:t[6]++;break;            case 8:t[7]++;break;            case 9:t[8]++;break;            case 10:t[9]++;break;        }    }    maxt=t[0];    for(i=0;i<10;i++)    {        if(t[i]>maxt)        {            maxt=t[i];        }    }    for(i=0;i<10;i++)    {        if(t[i]==maxt)        {            cout<<i+1<<endl;            break;        }    }}int main(){    int i,a[20],t[10];    while(cin>>a[0])    {        for(i=1;i<20;i++)        {            cin>>a[i];        }        fun(a,t);    }    return 0;}

程序截图:

0 0
原创粉丝点击