題目描述 :
北京校友會每年舉辦兩次,所有校友都有校友編號,每次到會的校友都在簽到簿上寫下自己的編號和姓名,
在校友會成立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.然后用標志變量來判斷是否是第一個出現的最佳校友。