思路都写在注释里了,慢慢享用
#include<stdio.h>
int main(void)
{
int n,i,x,count[10],cnt=0,index; // count是统计次数的 ,index是表示出现次数最多的下标
scanf("%d", &n);
for (i=0; i<10; i++) //初始化数组 count
count[i] = 0;
for (i=0; i<n; i++){
scanf("%d", &x);
do {
count[x%10] ++; //将输入的数字拆分,并且逐个计算次数
x /= 10;
}while (x != 0);
}
index = 0; //先假设 0是出现次数最多的,然后进入循环判断
for (i=1; i<10; i++){
if ( count [i] > count[index] ) // 若有比 0出现次数多的,则 index等于该下标
index = i;
}
printf("%d: %d", count[index], index);
for (i=index+1; i<10; i++){ // 这一步是判断一下 index后面,有没有与其相同次数的
if ( count[i] == count [index])
printf(" %d", i);
}
return 0;
}