求平均数,中位数和众数

用一个整型数组保存调查的若干反馈意见(<=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.使用函数。

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

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;
}

您好,我是有问必答小助手,您的问题已经有小伙伴帮您解答,感谢您对有问必答的支持与关注!
PS:问答VIP年卡 【限时加赠:IT技术图书免费领】,了解详情>>> https://vip.csdn.net/askvip?utm_source=1146287632