用c语言要求编写一个程序,对于参加大奖赛的青年歌手,根据评委会的打分,使用数组知识编程求出这个选手的平均得分(去掉一个最高分和一个最低分,小数点保留两位)。
时间: 2023-07-16 15:13:15 浏览: 108
好的,下面是一个用 C 语言编写的程序,可以实现你的需求:
```c
#include <stdio.h>
#define SIZE 10 // 定义数组大小
float average(float a[], int n); // 声明函数
int main(void) {
float scores[SIZE];
int i;
float avg;
printf("请输入 %d 位评委的打分:\n", SIZE);
for (i = 0; i < SIZE; i++) {
printf("第 %d 位评委的分数:", i + 1);
scanf("%f", &scores[i]);
}
avg = average(scores, SIZE);
printf("选手的平均得分为:%.2f\n", avg);
return 0;
}
float average(float a[], int n) {
int i;
float sum = 0.0;
float max = a[0], min = a[0];
for (i = 0; i < n; i++) {
sum += a[i];
if (a[i] > max) {
max = a[i];
}
if (a[i] < min) {
min = a[i];
}
}
return (sum - max - min) / (n - 2);
}
```
这个程序中,我们首先定义了一个常量 `SIZE` 表示数组的大小为 10。然后,我们在 `main` 函数中输入了 10 位评委的打分,并将这些分数存储在一个名为 `scores` 的数组中。
接着,我们调用了一个名为 `average` 的函数,用于计算选手的平均得分。这个函数的参数包括一个名为 `a` 的数组和一个整数 `n`,分别表示分数数组和数组的大小。在函数内部,我们首先定义了三个变量:`i` 用于循环计数,`sum` 用于记录所有分数的总和,`max` 和 `min` 分别记录最高分和最低分的值,初始值都为数组中的第一个元素。
然后,我们使用一个循环遍历数组中的所有元素,将分数累加到 `sum` 变量中,并比较每个分数是否比当前的最高分和最低分还要高或低,如果是,则将 `max` 或 `min` 更新为这个分数。
最后,我们返回剩余分数的平均值,这里使用的是 `(sum - max - min) / (n - 2)` 的公式。
最后,在 `main` 函数中,我们输出了选手的平均得分,保留了小数点后两位。
阅读全文