-
你程序的关键错是
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就可以了
-
在一些竞赛活动中,经常看到裁判现场打分的情况,为了保证竞赛公平,通常在所有裁判给出的分数中去掉一个或几个最高和最低分,然后用剩余的分数取平均得到参赛选手的最后得分。这一点在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个值,然后取平均。 -
你的程序算法实现有些问题,修改后的程序如下:
#include
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}
cout<return 0;
}程序的运行例:
如本站内容“对您有用”,欢迎随意打赏,让我们持续更新!
打赏