給定一批整數,分析每個整數的每一位數字,求出現次數最多的個位數字。例如給定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 }