習題7-2 求一批整數中出現最多的個位數字 (20 分)


給定一批整數,分析每個整數的每一位數字,求出現次數最多的個位數字。例如給定3個整數1234、2345、3456,其中出現最多次數的數字是3和4,均出現了3次。

輸入格式:

輸入在第1行中給出正整數N(1000),在第二行中給出N個不超過整型范圍的非負整數,數字間以空格分隔。

輸出格式:

在一行中按格式“M: n1 n2 ...”輸出,其中M是最大次數,n1、n2、……為出現次數最多的個位數字,按從小到大的順序排列。數字間以空格分隔,但末尾不得有多余空格。

輸入樣例:

3
1234 2345 3456

輸出樣例:

3: 3 4

提交:

#include <stdio.h>
//簡化版
int main(){
    
    int n,i;
    int max=0;//max表示最大次數
    int num[10]={0};//存儲各個數字出現的次數,下標0表示數字0
    scanf("%d\n",&n);
    for (i=0; i<n; i++) {
        int number;
        scanf("%d ", &number);//輸入每個數字
        while (number > 0) {
            num[number%10]++;//求余獲取每個數字並保存到數組中
            number /= 10;
        }
    }
    //找最大次數
    for(i=0;i<10;i++) {
        if (max < num[i]) max = num[i];
    }
    //輸出
    printf("%d:",max);
    for(i=0;i<10;i++) {
        if (max == num[i]) printf(" %d",i);//數字出現的次數為最大次數則輸出該最大次數對應的數字
    }
    
    return 0;
}

自己寫的原始版本:

#include <stdio.h>

int main(){
    
    int n,i,j,k;
    int max=0;
    scanf("%d\n",&n);
    int arr[n];
    for (i=0;i<n;i++) {
        scanf("%d ",&arr[i]);
    }
    int num[10]={0};//存儲各個數字出現的次數,下標0表示數字0
    for (i=0;i<n;i++) {
        while(arr[i] > 0){
            k = arr[i]%10;
            num[k]++;//k是0,則數組第一個位置數字加1 即0記一次數
            arr[i]/=10;
        }
    }
    
    for(i=0;i<10;i++) {
        if (max < num[i]) max = num[i];//max表示最大次數
    }
    printf("%d:",max);
    for(i=0;i<10;i++) {
        if (max == num[i]) printf(" %d",i);//數字出現的次數為最大次數則輸出該最大次數對應的數字
    }
    
    return 0;
}

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM