問題描述
編寫一個程序,讀入一組整數,這組整數是按照從小到大的順序排列的,它們的個數N也是由用戶輸入的,最多不會超過20。然后程序將對這個數組進行統計,把出現次數最多的那個數組元素值打印出來。如果有兩個元素值出現的次數相同,即並列第一,那么只打印比較小的那個值。
輸入格式:第一行是一個整數N,N £ 20;接下來有N行,每一行表示一個整數,並且按照從小到大的順序排列。
輸出格式:輸出只有一行,即出現次數最多的那個元素值。
輸入輸出樣例
編寫一個程序,讀入一組整數,這組整數是按照從小到大的順序排列的,它們的個數N也是由用戶輸入的,最多不會超過20。然后程序將對這個數組進行統計,把出現次數最多的那個數組元素值打印出來。如果有兩個元素值出現的次數相同,即並列第一,那么只打印比較小的那個值。
輸入格式:第一行是一個整數N,N £ 20;接下來有N行,每一行表示一個整數,並且按照從小到大的順序排列。
輸出格式:輸出只有一行,即出現次數最多的那個元素值。
輸入輸出樣例
樣例輸入
5
100
150
150
200
250
100
150
150
200
250
樣例輸出
150
1 #include<stdio.h> 2 int a[30]; 3 int main(){ 4 int n,sum=0,maxx=0; 5 int ans=0;//定義要輸出的那個數 6 scanf("%d",&n); 7 if(n<=0) return 0;//n<=0時不輸出 8 a[0]=0; 9 int i; 10 for(i=1;i<=n;i++){ 11 scanf("%d",a+i); 12 /*后輸入的數不等於前一個輸入的數*/ 13 if(a[i]!=a[i-1]){ 14 if(sum>maxx){ 15 maxx=sum; 16 /*記錄下前一個輸入的數*/ 17 ans=a[i-1]; 18 } 19 sum=1; 20 } 21 /*后輸入的數等於前一個輸入的數,則sum+1*/ 22 else 23 sum++; 24 } 25 if(sum>maxx){ 26 maxx=sum; 27 ans=a[i-1]; 28 } 29 printf("%d\n",ans); 30 return 0; 31 }