C语言拯救计划Day4-5之求整数序列中出现次数最多的数

本题要求统计一个整型序列中出现次数最多的整数及其出现次数。

输入格式:

输入在一行中给出序列中整数个数N(0<N≤1000),以及N个整数。数字间以空格分隔。

输出格式:

在一行中输出出现次数最多的整数及其出现次数,数字间以空格分隔。题目保证这样的数字是唯一的。

输入样例:

10 3 2 -1 5 3 4 3 0 3 2
 

输出样例:

3 4

 1 #include<stdio.h>
 2 #define N 1000
 3 //思路:使用两个数组,a[i] b[i],a[i]保存数据,b[i]保存每个数据出现的次数
 4 //      然后找到出现次数最多的b[i],并且记录下其下标i,从而找到最大次数对应的数字。
 5 int main()
 6 {
 7     int i, j, n;
 8     int a[N];
 9     int b[N] = {0};
10     int max;
11     int index = 0;
12     scanf("%d", &n);
13     for (i = 0; i < n; i++)
14     {
15         scanf("%d", &a[i]); 
16     }
17   ///用双循环拿a[i]元素和a数组的每一个数比较(包括a[i]本身)
18     for (i = 0; i < n; i++) //记录每个数字出现的次数,每个数字至少出现一次,使用数组b[i]保存下来次数。
19     {
20         for (j = 0; j < n; j++)
21         {
22             if (a[i] == a[j])
23             {
24                 b[i]++;//表示第i个元素出现的次数
25             }
26         }
27     }
28     max = b[0];
29     for (i = 1; i < n; i++) //查找最大的次数,记住最大次数的下标,使用该下标找到出现次数最大的数字。
30     {
31         if (max < b[i])
32         {
33             max = b[i];
34             index = i;
35         }
36     }
37     printf("%d %d
",a[index], max);///输出出现最多的数和次数
38     return 0;
39 }

思路和之前有两道题很类似,做法也很经典的,经常会用到的
注意点:
如何统计每个数的出现次数并找到最大出现次数?
  1.开一个和a一样大的数组用来记录次数,通过一个双重循环(相当于复制了一遍a数组),将a数组中的每一个数字和复制的a数组的数依次比较,如果遇到相同的 则次数加1
这样就可以统计第i个数出现的次数是多少
2.最大次数--类似求数组中最大值的做法
先假设最大值下标为0,然后用循环if语句找出b数组中的最大值,找出最大值的下标赋值于index

原文地址:https://www.cnblogs.com/noobchen/p/12788076.html