。。。怎么搞。。。。。。。 。。。。。
不用排序O(N)就可以了,直接遍历,求和,遍历过程中求出最小值和最大值还有和,循环结束后,减去最大和最小值。
int main(){
double arr[1000];
int n=0;
scanf("%d",&n);
for(int i=0;i<n;i++)
{
scanf("%lf",&arr[i]);
}
double sum=0.0;
double max=arr[0];
double min=arr[0];
for(int i=0;i<n;i++){
sum+=arr[i];
if(arr[i]>max)
max=arr[i];
if(arr[i]<min)
min=arr[i];
}
sum=sum-max-min;
double avage=sum/(n-2);
}
#include<stdio.h>
int main() {
int n, i;
double max, min, a,s;
scanf("%d %lf", &n, &a);
max = a;
min = a;
s = a;
for(i = 1; i < n; i++) {
scanf("%lf", a);
if(a > max) max = a;
if(a < min) min = a;
s += a;
}
printf("%.2lf", s/(n-2));
return 0;
}
少写代码就 n个数字组成的数组;对数组排序后,去掉第一个和最后一个