为什么变为666888的数也能被计算为平均数内?
例如样例,结果为十万多,显然计算了变大的数
#include<bits/stdc++.h>
#define endl '\n'
using namespace std;
const int N = 1e2 + 5;
int h[N];int l[N];int ans[N];double f[N];
int IN(int m){
for(int i = 0;i < m;i ++) cin>>h[i];//输入数据
}
int SORT(int m,int ans[]){//排序函数
double p = 0.0;//平均数
for(int i = 0;i < m;i ++){//排序
for(int j = 0;j < m - i;j ++){
if(ans[j] > ans[j + 1]) swap(ans[j], ans[j + 1]);
}
}ans[m - 1] = 666888;//将最大变为666888
ans[0] = 666888;///////将最小变为666888
for(int i = 0;i < m;i ++){//重新排序
for(int j = 0;j < m - i;j ++){
if(ans[j] > ans[j + 1]) swap(ans[j], ans[j + 1]);
}
}
for(int i = 0;i < m - 2;i ++) p += ans[i];
p /= (m - 2);//计算平均数
return p;//返回平均数
}
void OUT(int n, double f[]){
for(int i = 0;i < n;i ++){
for(int j = 0;j < n - i;j ++){
if(f[j] > f[j + 1]) swap(f[j], f[j + 1]);//排序每个人的平均数
}
}
cout<<fixed<<setprecision(2)<<f[n - 1];//输出最大的
}
int main(){
int m,n;
ios::sync_with_stdio(0),cin.tie(0),cout.tie(0);
cin>>n>>m;
for(int i = 0;i < n;i ++){
ans[i] = IN(m);//输入每一行
f[i] = SORT(m, ans);//计算平均数
}
OUT(n, f);//输出
return 0;
}
找了半天没明白问题在哪,悬关