使用c语言数组有n个评委评分,m个选手参赛,计算并输出参赛选手的最后得分,计算方法为去除一个最高分和一个最低分,其余的进行平均,得出参赛选手的最后得分,按从大到小的顺序输出参赛选手的最后得分
时间: 2024-05-03 18:17:48 浏览: 102
C语言输入学生成绩,计算并输出这些学生的最低分、最高分、平均分。
好的,下面是实现该功能的C语言代码:
```c
#include <stdio.h>
#define N 100 // 最大选手数
#define M 10 // 最大评委数
int main()
{
int n, m, i, j, k;
float score[N][M], sum, max, min, result[N], temp;
printf("请输入选手数和评委数:\n");
scanf("%d%d", &n, &m);
// 输入每个选手的评分
for (i = 0; i < n; i++) {
printf("请输入第%d个选手的%d个评分:\n", i+1, m);
for (j = 0; j < m; j++) {
scanf("%f", &score[i][j]);
}
}
// 计算每个选手的得分
for (i = 0; i < n; i++) {
max = min = score[i][0];
sum = 0;
for (j = 0; j < m; j++) {
if (score[i][j] > max) {
max = score[i][j];
}
if (score[i][j] < min) {
min = score[i][j];
}
sum += score[i][j];
}
result[i] = (sum - max - min) / (m - 2);
}
// 按从大到小的顺序输出每个选手的得分
for (i = 0; i < n - 1; i++) {
for (j = i + 1; j < n; j++) {
if (result[i] < result[j]) {
temp = result[i];
result[i] = result[j];
result[j] = temp;
}
}
}
printf("参赛选手的最后得分为:\n");
for (i = 0; i < n; i++) {
printf("%.2f ", result[i]);
}
printf("\n");
return 0;
}
```
代码实现中,使用一个二维数组score存储每个选手的评分,使用一个一维数组result存储每个选手的最后得分。首先输入每个选手的评分,然后计算每个选手的最后得分并存入result数组中。最后按从大到小的顺序输出每个选手的最后得分。
阅读全文