一个比赛有n个选手参赛,m(m>2)个评委为参赛选手(最高10分,最低0分)。规则为:在每个选手的m个得分中,去掉一个最高分,一个最低分,平均分作为选手的最后得分,请编程实现c语言
时间: 2024-12-14 19:21:57 浏览: 15
在C语言中,你可以创建一个函数来计算每个选手的最终得分。这里是一个简单的示例,假设我们有一个数组`scores[]`存储每个选手的所有评分,以及两个变量`n`和`m`分别代表选手的数量和评委数量:
```c
#include <stdio.h>
#include <stdlib.h>
// 函数原型声明
double calculate_average_score(int *scores, int n, int m);
int main() {
// 初始化选手数量、评委数量、分数数组等
int n = 5; // 替换为实际的选手数
int m = 3; // 替换为实际的评委数
int *scores = malloc(n * m * sizeof(int)); // 分配内存给评分数组
// 假设这里填充了score数组
// ... (填充选手评分)
for (int i = 0; i < n; i++) {
double final_score = calculate_average_score(scores + i*m, m - 2, m);
printf("选手%d 的最终得分为 %.2f\n", i+1, final_score);
}
free(scores); // 释放分配的内存
return 0;
}
// 计算去除最高分和最低分后的平均分
double calculate_average_score(int *scores, int count, int total_judges) {
if (count < 2) { // 如果评委给出的评分不足2个,无法计算
return -1.0; // 或者抛出错误
}
int sum = 0;
for (int j = 0; j < count; j++) {
sum += scores[j];
}
return (double)sum / count; // 返回平均分
}
```
在这个程序中,`calculate_average_score`函数接收选手的分数部分、有效分数的数量以及总评委数,然后遍历并计算除去最高分和最低分后的平均值。注意,在`main`函数中,你需要先为`scores`数组填充实际的评分,并在使用完毕后记得释放动态分配的内存。
阅读全文