2、输入n个数,去掉最大值和最小值,求平均值。(结果保留2位小数)330

360U3201204098 |浏览1265次
收藏|2021/11/29 19:07

满意回答

2021/11/29 19:39

你程序的关键错是a[i]=a[i]-mx-mim;a[i]不是所有数的和,而是一个随机的数(循环结束后,a[i]=a[n+1]),去最大/小值没有意义另外,若是OJ的,你要被坑的输入 n 个数,它可能是负数的,也可能大于1400000000。所以你的mx=0,mim=1400000000;是不对的再有,按C/C++程序员风格,下标要从0开始(当然,只是风格)最后,这么简单的求平均值 ,根本不用数组的(你先自己做下,给你思路,不明白可追问)首先,输入一个数,将和,最大,最小都等于它(就不用设0和1400000000,也无论正负了)然后输入n-1个数,并每个求和(这样不用数组),并断最大/最小且赋值最后和减最大、最小除n-2就可以了

whoami1978

其他回答(2)
  • 在一些竞赛活动中,经常看到裁判现场打分的情况,为了保证竞赛公平,通常在所有裁判给出的分数中去掉一个或几个最高和最低分,然后用剩余的分数取平均得到参赛选手的最后得分。这一点在Excel中用TRIMMEAN函数就可以轻松实现。TRIMMEAN函数先从数据集的头部和尾部除去一定百分比的数据点,然后再求平均值。其语法是: TRIMMEAN(array,percent) Array 为需要进行整理并求平均值的数组或数值区域。 Percent 为计算时所要除去的数据点的比例。例如,如果percent = 0.2,在20个数据点的集合中,就要除去4个数据点(20 ×0.2=4):头部除去2个,尾部除去2个。如果是在15个数据点的集合中,由于15×0.2=3,这时该函数将除去的数据点数目向下舍入为最接近的2的倍数,此处为2,因而将去掉一个最大值和一个最小值。 实例:16个数值去掉3个最大值和3个最小值,剩下10个数取平均值。 假如数值区域为A1:A16,用下面的公式: =TRIMMEAN(A1:A16,0.4) 说明:因为要去掉最大和最小各3个数值,所以取 Percent=0.4,16×0.4=6.4,向下舍入为6。TRIMMEAN函数自动除去最大的3个值和最小的3个值,然后取平均。
    回答于 2021/11/29 20:05
  • 你的程序算法实现有些问题,修改后的程序如下:#include<bits/stdc++.h>using namespace std;int main(){ int i,n,m,max=0,mim=1400000000;double sum=0.0,av=0.0;cin>>n;for(i=1;i<=n;i++){cin>>m;sum+=m;if(m>max)max=m;if(m<mim)mim=m;}cout<<fixed<<setprecision(2)<<(sum-max-mim)/(n-2)<<endl;return 0;}程序的运行例:
    回答于 2021/11/29 20:22
0人关注该问题
+1

 加载中...