Hanlone556 @ 2024-01-31 13:09:04
#include <iostream>
#include <iomanip>
using namespace std;
int main(){
int n;
double a[301];
cin >> n;
for(int i=0;i<n;i++){
cin >> a[i];
}
for(int i=0;i<n-1;i++){
for(int j=0;j<i-n-1;j++){
if(a[j]>a[j+1]){
double temp=a[j];
a[j]=a[j+1];
a[j+1]=temp;
}
}
}
double sum=0.00;
for(int i=0;i<n;i++){
sum+=a[i];
}
double ave=(sum-a[0]-a[n-1])/(n-2);
cout << fixed << setprecision(2) << ave << " ";
double x=ave-a[1];
double y=a[n-2]-ave;
if(x>=y) cout << x << endl;
if(x<y) cout << y << endl;
return 0;
}
by tghr0503 @ 2024-01-31 13:34:47
你的排序有问题,换成sort就过了
by Jason_Ming @ 2024-01-31 13:36:15
1、排序的内层循环终止条件应为: j<n-i-1
2、x和y在计算时应取绝对值,可以使用abs()函数,包含在 cmath
库中
by Jason_Ming @ 2024-01-31 13:40:18
abs(1)=1 abs(2.333)=2.333 abs(0)=0 abs(-114514)=114514 abs(-3.1415926)=3.1415926
by Hanlone556 @ 2024-01-31 14:24:56
@Jason_Ming 感谢回复!想问一下我这么写不能确保x,y都为正数吗?
by Hanlone556 @ 2024-01-31 14:26:24
@tghr0503 多谢!没有用sort是因为还没学到
by Jason_Ming @ 2024-01-31 14:47:32
@Hanlone556 其实……好像……可以确保(不好意思刚才脑抽了)(ㄒoㄒ)
by Hanlone556 @ 2024-01-31 14:56:32
@Jason_Ming 通过了,多谢!