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.然后用标志变量来判断是否是第一个出现的最佳校友。

转载于:https://www.cnblogs.com/yuanqingwen/p/10395802.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值