C语言拯救计划Day3-1之求一批整数中出现最多的个位数字

//丧气的一天也要坚持啊啊啊啊!

//拜托了,日子不管会不会变好,你也要变好哇

//遥远的你,最近过得还好嘛,好久不联系了诶

给定一批整数,分析每个整数的每一位数字,求出现次数最多的个位数字。例如给定3个整数1234、2345、3456,其中出现最多次数的数字是3和4,均出现了3次。

输入格式:

输入在第1行中给出正整数N(≤),在第二行中给出N个不超过整型范围的非负整数,数字间以空格分隔。

输出格式:

在一行中按格式“M: n1 n2 ...”输出,其中M是最大次数,n1、n2、……为出现次数最多的个位数字,按从小到大的顺序排列。数字间以空格分隔,但末尾不得有多余空格。

输入样例:

3
1234 2345 3456
 

输出样例:

3: 3 4



 1 #include<stdio.h>
 2 #include<stdio.h>
 3 #define N 1000
 4 #define NUM 10
 5 /*
 6 思路:
 7 1.拆分每个整数,利用一个10个元素的数组统计每个数字出现的次数
 8 2.找出出现次数最多的并输出次数
 9 3.利用十个元素的数组下标与分解的数字一一对应,输出出现次数最多的代表的数字
10 */
11 int main()
12 {
13     int i, n;
14     int a[N];
15     int b[NUM] = {0}; ///巧妙的利用十个元素的数组,下标和数字恰好对应
16     int t = -1;
17     int max = -1;
18     scanf("%d", &n);
19     for (i = 0; i < n; i++)
20     {
21         scanf("%d", &a[i]);
22     }
23     for (i = 0; i < n; i++)
24     {
25          do  //注意,这里一定要考虑整数是0的情况
26         {
27             t = a[i] % 10;
28             b[t]++;
29             a[i] = a[i] / 10;
30         }while (a[i] != 0);
31     }
32     ///找出出现的最多次数是多少
33     for (i = 0; i < NUM; i++)
34     {
35         if (b[i] > max)
36         {
37             max = b[i];
38         }
39     }
40     printf("%d:", max);///输出最多次数
41     for (i = 0; i < NUM; i++)
42     {
43         if (max == b[i])///如果相等,则说明i代表的这个数字就是出现次数最多的数字
44         {
45             printf(" %d", i); ///打印i
46         }
47     }
48     return 0;
49 }
 
原文地址:https://www.cnblogs.com/noobchen/p/12779503.html