弱水3001 2022-10-14 22:17 采纳率: 100%
浏览 145
已结题

求平均数,中位数和众数

用一个整型数组保存调查的若干反馈意见(<=40),反馈意见介于0-10分之间,函数编程计算反馈意见的平均数(Mean)、中位数(Median)和众数(Mode)。
【输入】
两行
第一行是反馈意见个数”%d”
第二行是反馈意见数组
【输出】
Mean=”%d\n”
Median=”%d\n”
Mode=”%d\n”
【示例1】
【输入】
10
10 9 10 8 7 6 5 10 9 8
【输出】
Mean=8
Median=8
Mode=10

提示:
1.中位数指的是排列在数组中间的数。如果原始数据的个数是偶数,那么中位数等于中间那两个元素的算术平均值。
2.众数是数组中出现次数最多的那个数(不考虑两个或两个以上的反馈意见出现次数相同的情况)。
3.使用函数。

  • 写回答

2条回答 默认 最新

  • 关注

    遍历数组统计即可。
    运行结果:

    img

    代码如下:

    #define _CRT_SECURE_NO_WARNINGS
    #include<stdio.h>
    
    //平均数
    int Mean(int a[], int n)
    {
        int m = 0;
        int i;
        for (i = 0; i < n; i++)
            m += a[i];
        return m / n;
    }
    //求中位数
    int Median(int a[], int n)
    {
        //先排序
        int i, j, t;
        for (i = 0; i < n - 1; i++)
        {
            for (j = 0; j < n - 1 - i; j++)
            {
                if (a[j] > a[j + 1])
                {
                    t = a[j];
                    a[j] = a[j + 1];
                    a[j + 1] = t;
                }
            }
        }
        //如果是奇数个,输出中间值
        if (n % 2 == 1)
            return a[n / 2];
        else
        {
            return (a[n / 2] + a[n / 2 - 1]) / 2;
        }
    }
    
    //众数
    int Mode(int a[], int n)
    {
        int cnt[11] = { 0 };//因为分数是从0-10,所以用11个元素的数组记录每个数字出现的次数
        int i, max, index;
        for (i = 0; i < n; i++)
            cnt[a[i]] += 1;
        //找出最大数
        max = 1;
        index = 0;
        for (i = 0; i < 11; i++)
        {
            if (cnt[i] > max)
            {
                max = cnt[i];
                index = i;
            }
                
        }
        return index;
    }
    
    
    
    int main()
    {
        int a[40], mean = 0, median = 0, mode = 0;
        int i,n;
        scanf("%d", &n);
        for (i = 0; i < n; i++)
            scanf("%d", &a[i]);
        mean = Mean(a, n); //平均数
        median = Median(a, n);//中位数
        mode = Mode(a, n);//众数
    
        printf("Mean=%d\nMedian=%d\nMode=%d\n", mean, median, mode);
        return 0;
    }
    
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论 编辑记录
查看更多回答(1条)

报告相同问题?

问题事件

  • 系统已结题 10月23日
  • 已采纳回答 10月15日
  • 创建了问题 10月14日

悬赏问题

  • ¥15 微信小程序协议怎么写
  • ¥15 c语言怎么用printf(“\b \b”)与getch()实现黑框里写入与删除?
  • ¥20 怎么用dlib库的算法识别小麦病虫害
  • ¥15 华为ensp模拟器中S5700交换机在配置过程中老是反复重启
  • ¥15 java写代码遇到问题,求帮助
  • ¥15 uniapp uview http 如何实现统一的请求异常信息提示?
  • ¥15 有了解d3和topogram.js库的吗?有偿请教
  • ¥100 任意维数的K均值聚类
  • ¥15 stamps做sbas-insar,时序沉降图怎么画
  • ¥15 买了个传感器,根据商家发的代码和步骤使用但是代码报错了不会改,有没有人可以看看