问题描述
  编写一个程序,读入一组整数,这组整数是按照从小到大的顺序排列的,它们的个数N也是由用户输入的,最多不会超过20。然后程序将对这个数组进行统计,把出现次数最多的那个数组元素值打印出来。如果有两个元素值出现的次数相同,即并列第一,那么只打印比较小的那个值。
  输入格式:第一行是一个整数N,N £ ;接下来有N行,每一行表示一个整数,并且按照从小到大的顺序排列。
  输出格式:输出只有一行,即出现次数最多的那个元素值。
输入输出样例
样例输入 样例输出

题目描述

先上代码:

 #include <stdio.h>
using namespace std; int main(void)
{
int n;
int num[+];
scanf("%d",&n);
if (n<=)
return ; for (int i= ; i<n ; i ++)
{
scanf("%d",&num[i]);
} int max= ,tmp=,res=num[];//当n=1或n=2时,均返回第一个数
for (int i=; i<n-; i++)
{
if (num[i] == num[i+])
{
tmp ++;
}
else
{
if (tmp > max)
{
max = tmp;
res = num[i];
}
tmp = ;
}
} if (tmp>max)//最后一个数出现最多
printf("%d\n",num[n-]);
else
printf("%d\n",res); return ;
}

C++解法

解题思路:

1.n<=0时返回0

2.当n=1或n=2时,返回第一个数

3.遍历统计出现最多的数时,最后一个数的判断需要在循环外再做判断

05-06 01:13