kaenoly @ 2024-11-07 16:19:27
#include<bits/stdc++.h>
using namespace std;
int n,ma,mb;
double a[305],s,ave;
int main(){
cin>>n;
for(int i=1;i<=n;i++){
cin>>a[i];
}
ma=mb=1;
s=a[1];
for(int i=2;i<=n;i++){
s+=a[i];
if(a[i]>a[ma]){
ma=i;
}
if(a[i]<a[mb]){
mb=i;
}
}
ave=(s-a[ma]-a[mb])/(n-2);
double x[305],t=0;
for(int i=1;i<=n;i++){
if(i!=ma&&i!=mb){
x[i]=abs(a[i]-ave);
}
}
for(int i=1;i<=n;i++){
if(x[i]>t){
t=x[i];
}
}
printf("%.2lf %.2lf",ave,t);
return 0;
}
by call_of_silence @ 2024-11-07 16:24:49
@kaenoly 定义 double 数组 x[305] 放到主函数外面吧,在主函数里面定义可能里面不为空(你也可以手动清空)
#include<bits/stdc++.h>
using namespace std;
int n,ma,mb;
double a[305],s,ave;
double x[305],t=0;
int main(){
cin>>n;
for(int i=1;i<=n;i++){
cin>>a[i];
}
ma=mb=1;
s=a[1];
for(int i=2;i<=n;i++){
s+=a[i];
if(a[i]>a[ma]){
ma=i;
}
if(a[i]<a[mb]){
mb=i;
}
}
ave=(s-a[ma]-a[mb])/(n-2);
for(int i=1;i<=n;i++){
if(i!=ma&&i!=mb){
x[i]=abs(a[i]-ave);
}
}
for(int i=1;i<=n;i++){
if(x[i]>t){
t=x[i];
}
}
printf("%.2lf %.2lf",ave,t);
return 0;
}
by kaenoly @ 2024-11-07 16:28:03
@call_of_silence 谢谢