szpszp123 @ 2024-12-25 19:59:16
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
double calaver(double number[],int n,double max,double min){
double sum=0;
for(int i=0;i<n;i++){
if(number[i]!=max&&number[i]!=min){
sum+=number[i];
}
}
return sum/(n-2);
}
double calerror(double number[],double max,double min,int n,double aver){
double e=0;
for(int i=0;i<n;i++){
if(number[i]!=max&&number[i]!=min){
double l=fabs(number[i]-aver);
if(l>e){
e=l;
}
}
}
return e;
}
int main(){
int n;
scanf("%d\n",&n);
double number[n];
for(int i=0;i<n;i++){
scanf("%lf\n",&number[i]);
}
double max=number[0];double min=number[0];
for(int i=1;i<n;i++){
if(number[i]>max)
max=number[i];
if(number[i]<min)
min=number[i];
}
double aver=calaver(number,n,max,min);
double error=calerror(number,max,min,n,aver);
printf("%.2lf %.2lf",aver,error);
return 0;
}
这个错在哪里啊,我在自己的编译器上试了,结果是对的啊
by zhangsiyu2304 @ 2024-12-25 20:23:36
找最大最小值的循环变量要从i=0开始
by mcbm @ 2024-12-25 21:41:47
@zhangsiyu2304,for的条件是i<n,所以没问题。