2、输入n个数,去掉最大值和最小值,求平均值。(结果保留2位小数)
#include<bits/stdc++.h>using namespace std;int main(){ int i,mx=0,mim=1400000000;double b,a[1005],n;cin>>n;for(i=1;i<=n;i++)cin>>a[i];for(i=1;i<=n;i++){if(a[i]>mx)mx=a[i];if(a[i]<mim)mim=a[i];}a[i]=a[i]-mx-mim;b=a[i]/(n-2);cout<<fixed<<setprecision(2)<<b;return 0;}这为社么不对
你程序的关键错是
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就可以了
热门标签: