08-1. 求一批整數中出現最多的個位數字(20)


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

輸入格式:

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

輸出格式:

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

輸入樣例:

3
1234 2345 3456

輸出樣例:

3: 3 4



 1 #include <stdio.h>
 2 
 3 int main()
 4 {
 5     int n;                             //輸入n個數 
 6     scanf("%d", &n);
 7     
 8     int i, a[n], b[10] = {0};
 9     for(i = 0 ; i < n ; i++) {     
10         scanf("%d", &a[i]);            //將n個數存放到a數組中 
11         while(a[i] != 0) {
12             b[a[i] % 10]++;            //a[i]的個位數當作b數組的下標  
13             a[i] /= 10;                //去掉a[i] 的個位數 
14         }                              //a[i]的 各個位數(個位,百位...)都存放在b 數組的下標 ,並且記錄下它出現的個數 
15     }                                  //n 個數字都遍歷完 
16     int t = 0;
17     for(i = 0 ; i < 10 ; i++) {        //b[i]表示數字 i 出現的次數  
18         if(t < b[i]) {
19             t = b[i];                  //找到b[i]的最大值 
20         }
21     } 
22     printf("%d: ", t);                 //按格式輸出前面部分 
23     int c[10] = {-1}, cnt = 0;          
24     for(i = 0 ; i < 10 ; i++) {        //遍歷b[i]數組 
25         if(b[i] == t) {                //找到b[i]的所有最大值 (出現最多次數) 
26             c[i] = i;                  //並將最大值的下標存放到c 數組中(下標對應相等 ) 
27             cnt++;                     //並記錄有多少最大值 
28         }
29     }
30     int cnt2 = 0;
31     for(i = 0; i < 10; i++) {          //遍歷c 數組 
32         if(c[i] == i) {                //找到最大值下標 (出現最多次數的數字) 
33             printf("%d", i);           //並輸出  
34             cnt2++;
35             if(cnt2 < cnt) {
36                 printf(" ");
37             }
38         } 
39     } 
40     
41     return 0;
42 }

 


免責聲明!

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



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