统计出现次数最多的整数(

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

思路简介

本题不难看出统计所输入的所有数字的个数,然后在输出现次数最多的数字,注意:还有一个需要思考的问题就是出现次数相同的两个元素,要比较大小,取最小的那个元素值

  1. 输入:1 2 3 4 5 1 2 3 4 5
    输出:1

  2. 输入:1 1 1 2 2 2 2 3 4 5
    输出:2
    接下来上代码分析

#include<stdio.h>
int a[1000001]={
    
    0};//定义一个元素值全为0的数组a[1000001],
int n;
int main(){
    
    
	int i,j,k,max=0;//最开始先令max=0
	scanf("%d",&n);
	for(i=1;i<=n;i++){
    
    
		scanf("%d",&k);//输入n个元素
		a[k]++;//这行很重要,可以统计你所输入元素的次数	
	}
	for(i=0;i<=1000000;i++){
    
    
		if(a[i]>a[max]) max=i;//从数组a[1]的元素值开始与max进行比较大小,如果大于max则令max的值=i(对i进行标记)找出次数最多的那个下标
	}
	printf("%d",max);//输出max
} 

a[k]++;就是将数组中的下标换成我们对应的输入值,可以快速统计出现次数(a[k]初始次数都是0)以下是列举几个例子:

输入 a[k]++
25 1
25 2
2 1
1 1
1 2

if(a[i]>a[max]) max=i;就是用从小到大进行比较,并用max对出现次数最多次的数组下标进行标记,这个下标就是我们输入的值。

本人新手小萌新一枚,这篇博客是我的第一次书写,有许多错误的地方还希望大家多多包涵,哈哈哈!祝大家生活愉快!

猜你喜欢

转载自blog.csdn.net/qq_52044923/article/details/109952714
今日推荐