任务描述
本关任务:给定 n 个正整数,编写一个实验程序找出它们中出现次数最多的数。如果这样的数有多个,输出其中最小的一个。
编程要求
请在右侧编辑器Begin-End
处补充代码,完成本关任务。
测试说明
平台会对你编写的代码进行测试,比对你输出的数值与实际正确数值,只有所有数据全部计算正确才能通过测试:
测试输入:
6 //给定6(n)个正整数
10 //此行及以下为具体的每个数据
1
10
20
30
20
预期输出:出现次数最多的且最小的数为10
#include <stdio.h>
using namespace std;
#include<algorithm>
/********** Begin **********/
int find(int n,int * a)
{
int maxn=0,bestd,num=1,i=1;
sort(a,a+n);
int pred=a[0];
while(i<n)
{
while(i<n&&a[i]==pred)
{
num++;
i++;
}
if(num>maxn)
{
bestd=pred;
maxn=num;
}
pred=a[i];
num=1;
i++;
}
return bestd;
}
int main()
{
int n,bestd,i;
scanf("%d",&n);
int a[n];
for(i=0;i<n;i++)
scanf("%d",&a[i]);
bestd=find(n,a);
printf("出现次数最多的且最小的数为%d\n",bestd);
return 0;
}
/********** End **********/