zzuli oj 1123 最佳校友

题目描述 :
北京校友会每年举办两次,所有校友都有校友编号,每次到会的校友都在签到簿上写下自己的编号和姓名,
在校友会成立5周年的聚会上将颁发“最佳校友奖”,该奖项颁发给到会次数最多的校友。现在请你编写程
序,找出这个奖项的得主。若有多个校友并列第一,则均可获奖。  
输入
输入若干个整数,表示签到簿上的校友编号,所有编号均为0~99的整数,以一个负数作为输入结束的标志。
输出
输出出现次数最多的编号。若获奖选手有多个,则按从小到大的顺序输出选手编号,用空格隔开。
解题思路:
1.编写排序函数。2.统计同一编号出现的次数,跟之前的数气球颜色差不多。
代码实现:

 1 #include<stdio.h>
 2 #define N 100
 3 int main()
 4 {
 5  int a[N]={0},n,i,max,l=0;
 6  while(scanf("%d",&n),n>=0)
 7  {
 8   a[n]++;
 9  }
10  max=a[0];
11  for(i=0;i<N;i++)
12  {
13   if(a[i]>=max)
14   max=a[i];
15  }
16  for(i=0;i<N;i++)
17  {
18   if((a[i]==max)&&l==0)
19   {
20    printf("%d ",i);
21    l=1;
22   } 
23   else if(a[i]==max)
24   printf("%d",i);
25  }
26 }

 


易错分析:
1.直接用输入的编号做数组下标可以省去查找的步骤,然后每个元素的数值即使编号也就是数组下标的出现次数。
2.用打擂台的方式先找出最大值。
3.然后用标志变量来判断是否是第一个出现的最佳校友。

posted @ 2019-02-18 15:20  沅清的小窝  阅读(1289)  评论(0编辑  收藏  举报