编写一个对n个数据从大到小的排序C丽数,再编写一个计算最后得分的C函数。计算方法:去除一个最高分,去除一个最低分,其余的平均分为参赛选手的最后得分。在主函数中调用它们,对有n个评委评分,m个选手参赛的
时间: 2024-12-09 16:25:42 浏览: 31
c语言大丰收游戏源码.zip
在C语言中,我们可以使用`qsort`函数来实现数组的快速排序,然后通过两个自定义函数分别处理最高分和最低分以及剩余分数的平均计算。这里是一个简单的示例:
```c
#include <stdio.h>
#include <stdlib.h>
// 用于比较数值的辅助函数,按照降序排列
int compare(const void *a, const void *b) {
return (*(int*)b - *(int*)a);
}
// 排序数组
void sort_scores(int scores[], int n) {
qsort(scores, n, sizeof(int), compare);
}
// 计算最后得分,去除最高分和最低分,返回剩余分数的平均值
double calculate_score(int scores[], int n) {
if (n <= 1) {
printf("Error: Not enough scores to calculate.\n");
return 0;
}
double sum = 0;
for (int i = 1; i < n - 1; i++) { // 避免第一个和最后一个元素
sum += scores[i];
}
return sum / (n - 2); // 返回除以剩余人数的平均分
}
// 主函数
int main() {
int judges[] = {85, 90, 95, 80, 88, 92}; // 假设评委打分数组
int m = sizeof(judges) / sizeof(judges[0]);
sort_scores(judges, m);
int competitors[] = {75, 85, 95, 80, 88, 92}; // 假设选手得分数组
int n = sizeof(competitors) / sizeof(competitors[0]);
printf("Sorted Judges Scores: ");
for (int i : judges) {
printf("%d ", i);
}
printf("\n");
double final_score = calculate_score(judges, m);
printf("Final Competitor Score: %.2f\n", final_score);
return 0;
}
```
阅读全文