求小範圍的眾數

雖然陣列基本使用方式不難理解,但經過多種不同條件題目的練習,體會到困難的地方在於運用方式,其實解一個問題每個人都有不同見解,但結論都是要符合條件,讓自己可以更有效率且撰寫得更清楚明白,是需要多多省思的,下面題目雖然不難,解法也有很多種,如何靈活運用陣列特性來解決,才是多練習的其中一個大目的。

輸入10組個位數,求小範圍的眾數(相同時取大者為解)
e.g:1,3,9,7,3,8,6,8,2,2,ANS=8(8>3>2)

#include<stdio.h>
int main(){
        int g[10]={0};//陣列g的[10]分別為0~9,我們可以利用它的編號(也就是
        int i,n;             //輸入的個位數)與內容關係來取的答案。姑且用n當作代
        for(i=1;i<=10;++i){      //號來靈活運用
                scanf("%d",&n);
                g[n]++;
        }
        int ans=0;                    //暫時為最眾
        for(n=1;n<10;++n){   //輸入1~9數值分別存在n數裡(1有x個....2有x個....)
                if(g[n]>=g[ans]){
                        ans=n;
                }
        }
        printf("%d\n",ans);
        return 0;
}

留言