本文共 808 字,大约阅读时间需要 2 分钟。
问题描述
编写一个程序,读入一组整数,这组整数是按照从小到大的顺序排列的,它们的个数N也是由用户输入的,最多不会超过20。然后程序将对这个数组进行统计,把出现次数最多的那个数组元素值打印出来。如果有两个元素值出现的次数相同,即并列第一,那么只打印比较小的那个值。 输入格式:第一行是一个整数N,N £ 20;接下来有N行,每一行表示一个整数,并且按照从小到大的顺序排列。 输出格式:输出只有一行,即出现次数最多的那个元素值。输入输出样例样例输入5100150150200250样例输出150当输入的数不相同时temp会变回1;而count没有变回1; if (temp > count) { count = temp; b = a[i]; 这个语句就能体现出如果两个元素值出现次数相同则打印最小的,因为例如如果最后一个是200,当temp再次变为2,但它不大于count,所以b不会变,还是上一个。#include <iostream> using namespace std; int main() { int n; cin >> n; if (n > 0) { int *a = new int [n]; int b; int count = 1; int temp = 1; cin >> a[0]; b = a[0]; for(int i = 1; i < n; i++) { cin >> a[i]; if (a[i] == a[i - 1]) { temp++; if (temp > count) { count = temp; b = a[i]; } } else { temp = 1; } } cout << b; delete [] a; } return 0; }转载于:https://blog.51cto.com/13176924/2088038