求助
查看原帖
求助
1092947
Ssim_on_wxs楼主2023/11/4 20:09

为什么变为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;
}

找了半天没明白问题在哪,悬关

2023/11/4 20:09
加载中...