c语言求n个数的中位数_用频率直方图求平均数

c语言求n个数的中位数_用频率直方图求平均数《C语言程序设计》苏小红第八章习题8.8

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE使用 1年只要46元 售后保障 童叟无欺

平均值 中位数 众数

在习题8.8的基础上, 用一个整型数组feedback保存调查的40个反馈意见。用函数编程计算反馈意见的平均值(Mean) 、中位数(Median) 和众数(Mode) 。中位数指的是排列在数组中间的数。如果原始数据的个数是偶数,那么中位数等于中间那两个元素的算术平均值。众数是数组中出现次数最多的那个数(不考虑两个或两个以上的反馈意见出现次数相同的情况)。
输入:

1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 9

输出:

4.725000 5.000000 9

#include <stdio.h>
#define N 40
double Mean (int feedback[N]);
double Median (int feedback[N]);
int Mode (int feedback[N],int count[]);
int main (void)
{ 
   
    int feedback[N]={ 
   0},count[10000]={ 
   0},i,mode=0;
    double mean,median;
    for (i=0;i<N;i++)
    { 
   
        scanf("%d",&feedback[i]);
    }
    mean=Mean(feedback);
    median=Median(feedback);
    mode=Mode(feedback,count);
    printf("%f %f %d",mean,median,mode);
    return 0;
}
double Mean (int feedback[N])
{ 
   
    int i;
    double sum=0,mean;
    for (i=0;i<N;i++)
    { 
   
        sum+=feedback[i];
    }
    mean=sum/N;
    return mean;
}
double Median (int feedback[N])
{ 
   
    int i,temp,count;
    double median;
    do{ 
   
        count=0;
        for (i=0;i<N-1;i++)
        { 
   
            if (feedback[i]<feedback[i+1])
            { 
   
                temp=feedback[i];
                feedback[i]=feedback[i+1];
                feedback[i+1]=temp;
                count++;
            }
        }
    }while (count!=0);
    if (N%2!=0)
    { 
   
        median=feedback[N/2];
    }
    else
    { 
   
        median=(feedback[N/2]+feedback[(N/2)-1])/2.0;
    }
    return median;
}
int Mode (int feedback[N],int count[])
{ 
   
    int i,mode=0,max;
    max=0;
    for (i=0;i<N;i++)
    { 
   
        count[feedback[i]]++;
    }
    for (i=0;i<N;i++)
    { 
   
        if(max<count[feedback[i]])
        { 
   
            max=count[feedback[i]];
            mode=feedback[i];
        }
    }
    return mode;
}


众数部分参考了别人的代码(因为一开始没想到T^T

⚠修改:

谢谢@囷囷jn 的提醒,确实一开始的中位数部分只考虑了N为奇数的情况(学校oj居然给我AC了,太BUG了),没有考虑N为偶数的情况,目前已修改。
而且!!修改过程中发现了一个很恐怖的事情,我一开始在求中位数的函数部分,冒泡排序的时候数组⚠越界了!!!越界真的是很恐怖的事情,感受到了!!!

时间:2020/11/26 17:09:23

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/192439.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • docker容器ip和端口分配_docker iptables failed

    docker容器ip和端口分配_docker iptables failed当我们用docker新启动一个容器时,有时候想要查看容器的ip,用ipaddr命令,却提示找不到命令:这时我们可以用命令:aptupdate&&aptinstall-yiproute2进行安装,安装好之后就可以正常使用了:…

    2022年7月27日
    7
  • FinSH组件用法

    FinSH组件用法概述本文简单介绍rtthread的FinSH控制台组件的用法,在实际项目中,该组件对调试非常方便。正文首先,先按上篇搭建好工程。这里,我以正点原子战舰板工程来实验。FinSH组件的文件结构如下:shell.c、msh.c这两个文件实际项目中基本不用更改,所以我们在cmd.c中增加我们需要的命令即可。不带参数的命令带参数的命令总结到这里,就简单了解了FinSH组件的用法。…

    2022年5月11日
    67
  • 矢量网络分析仪原理图_矢量网络分析仪

    矢量网络分析仪原理图_矢量网络分析仪网络分析仪组成框图图1所示为网络分析仪内部组成框图。为完成被测件传输/反射特性测试,网络分析仪包含;1.激励信号源;提供被测件激励输入信号2.信号分离装置,含功分器和定向耦合器件,分别提取被测试件输入和反射信号。3.接收机;对被测件的反射,传输,输入信号进行测试。4.处理显示单元;对测试结果进行处理和显示。图1网络分析仪组成框图传…

    2022年8月11日
    6
  • mysql fulltext搜索_mysql 全文搜索 FULLTEXT

    mysql fulltext搜索_mysql 全文搜索 FULLTEXT到3.23.23时,MySQL开始支持全文索引和搜索。全文索引在MySQL中是一个FULLTEXT类型索引。FULLTEXT索引用于MyISAM表,可以在CREATETABLE时或之后使用ALTERTABLE或CREATEINDEX在CHAR、VARCHAR或TEXT列上创建。对于大的数据库,将数据装载到一个没有FULLTEXT索引的表中,然后再使…

    2025年7月8日
    1
  • 点积与叉积[通俗易懂]

    点积与叉积[通俗易懂]1. 向量的点乘:向量点乘是其各个分量乘积的和几何意义:点乘的结果是一个标量,等于向量大小与夹角的cos值的乘积。                    a•b=|a||b|cosθ                如果a和b都是单位向量,那么点乘的结果就是其夹角的cos值。                    a•b=cosθ交换律:分配律:结合律:  其中m是实数。2.向量叉乘:两个…

    2025年7月26日
    5
  • 第二篇 FastAI数据准备「建议收藏」

    第二篇 FastAI数据准备「建议收藏」一、FastAI代码组织结构(文档链接)FastAI库主要涉及神经网络在如下四个领域的应用:collab(协同滤波问题)、tabular(结构化数据或者说表格数据处理)、text(自然语言处理)、vision(机器视觉)。对每一领域(除了collab),其下又会按照如下结构组织代码:(1)data:定义了模型所需的数据集类。(2)transform:数据预处理(如对图像数据的图像…

    2025年10月5日
    4

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号