天天看點

統計出現次數最多的整數(

統計出現次數最多的整數(新手上路,請多包涵)

問題描述

  編寫一個程式,讀入一組整數,這組整數是按照從小到大的順序排列的,它們的個數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對出現次數最多次的數組下标進行标記,這個下标就是我們輸入的值。

本人新手小萌新一枚,這篇部落格是我的第一次書寫,有許多錯誤的地方還希望大家多多包涵,哈哈哈!祝大家生活愉快!

繼續閱讀