大一新生一枚 求强人讲解一下

在比赛活动中,n名评委给每名选手评分,选手得分计算规则是:去掉一个最高分和一个最低分后其余分数的平均值。现请编写一函数scoreOfPlayer,计算选手的得分。要求:(1)从键盘输入各评委的评分;(2)数返回值是选手的得分;(3)评委的人数在调用函数时给定
我的代码如下 但是输了一半天了 他就是不减去最小值
#include
int scoreOfplayer(int n)
{
float sum = 0,average;
float a[n];
int min=a[0],max=a[0];
scanf("%f",&a[0]);
for(int i=1;i
{
scanf("%f",&a[i]);
if(min>a[i])
min=a[i];
if(max
max=a[i];
sum+=a[i];
}
sum=sum+a[0];
if(n>2)
average=(sum-min-max)/(n-2);
if(n==1)
average=0;
if(n==2)
average=0;
return average;
}
int main()
{
float result=scoreOfplayer(4);
printf("%f",result);
}

#include <assert.h>
#include <float.h>
#include <stdio.h>

float scoreOfPlayer(int n) {
  float x, max = -FLT_MAX, min = FLT_MAX, sum = 0.0f;

  assert(n > 2);

  for (int i = 0; i < n; i++) {
    scanf("%f", &x);
    if (x > max)
      max = x;
    if (x < min)
      min = x;
    sum += x;
  }

  return (sum - min - max) / (n - 2);
}

int main() {
  printf("%f", scoreOfPlayer(4));
  return 0;
}

#include <assert.h>
#include <float.h>
#include <stdio.h>

float scoreOfPlayer(int n) {
float x, max = -FLT_MAX, min = FLT_MAX, sum = 0.0f;

assert(n > 2);

for (int i = 0; i < n; i++) {
scanf("%f", &x);
if (x > max)
max = x;
if (x < min)
min = x;
sum += x;
}

return (sum - min - max) / (n - 2);
}

int main() {
printf("%f", scoreOfPlayer(4));
return 0;
}

这个代码根据逻辑,清晰的当,建议使用。+1