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