问题描述
编写一个程序,读入一组整数,这组整数是按照从小到大的顺序排列的,它们的个数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 }