统计数组中出现次数最多的数

题目:

从键盘输入10个数据,存入数组当中,统计数组当中出现次数最多的数是哪一个数,并且输出其出现次数。(如果有次数相同则输出第一个出现数字)。

解题思路:

解决这道题目,关键在于如何统计数组中每个数的出现次数。我在这里定义了两个数组,分别为数组a和数组b,数组a用来存储输入的十个数据,数组b用来存储对应数据的出现次数。(这里说明一下,因为我将数组b的赋值操作置于两个循环间,所以次数存放位置的下标和对应数据的下标是对应的。如:b[0]是a[0]出现的次数)

下面我解释一下个数是如何统计的,我利用嵌套for循环的特点(内层循环完,外层循环一次)对数组a进行一个双重的遍历。那么外层循环一次就是在进行用数组a中一个数据去和所有数据进行比较,如果相等执行count++,因为count被初始化为0,相等一次count为1,相等两次count为2,依此类推。当内层循环结束后,完成对数组a中一个元素出现次数的统计,重复内层循环多次,完成对数组a中所有元素出现次数的统计。注意:每次统计一个元素的出现次数并记录后,要对计数变量清零。

程序代码:

#include <stdio.h>

int main(int argc, char *argv[])
{ 
    int a[10],b[10];//数组b中对应存储a中每一个数的出现次数
    int i,j,k = 0,count = 0;
    printf("请输入10个数:");
    for(i = 0; i < 10; i++){//给数组赋值
        scanf("%d",&a[i]);
    }
    for(i = 0; i < 10; i++){
        for(j = 0; j < 10; j++){
            if(a[i] == a[j]){//因为count的初值是0,只出现一次的数,count为1,统计是正确的。
                count++;
            }
        }
        b[k] = count;
        count = 0;//计数清零,下一轮统计下一个数的出现次数
        k++;
    }
    int max = b[0],l;
    for(j = 0; j < 10; j++){
        if(b[j] > max){
            max = b[j];//找到次数的最大值
            l = j;//记录次数最多的数的对应下标
        }
    }
    printf("在数组中出现最多的数是:%d,出现的次数为:%d\n",a[l],max);
    return 0;
} 

运行结果:

请输入10个数:1 5 77 68 25 36 25 48 25 68
在数组中出现最多的数是:25,出现的次数为:3
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值