c语言,n个评委打分,去掉一个最高分和一个最低分,然后得选手平均分

在C语言中实现去掉一个最高分和一个最低分后,对选手的平均分计算,可以按照以下步骤进行:

  1. 输入评委打分:首先需要从用户获取n个评委的打分,可以使用数组来存储这些分数。

  2. 找出最高分和最低分:遍历数组找到最高分和最低分的值及其对应的索引位置。

  3. 去掉最高分和最低分:通过将找到的最高分和最低分对应的索引位置设为无效值(例如-1或其他不可能的分数),从而在计算平均分时忽略这两个分数。

  4. 计算平均分:对有效的分数进行求和,并计算平均值。

  5. 输出结果:将计算得到的平均分输出给用户。

下面是一个示例代码:

c
#include <stdio.h> #define MAX_JUDGES 20 // 最大评委人数 // 函数声明 float calculateAverageScore(int scores[], int n); int main() { int n; // 评委人数 int scores[MAX_JUDGES]; // 存储评委的打分 // 输入评委人数 printf("请输入评委人数:"); scanf("%d", &n); // 输入每个评委的打分 printf("请输入每个评委的打分:\n"); for (int i = 0; i < n; i++) { printf("评委%d的打分:", i + 1); scanf("%d", &scores[i]); } // 找出最高分和最低分的索引 int maxIndex = 0, minIndex = 0; for (int i = 1; i < n; i++) { if (scores[i] > scores[maxIndex]) { maxIndex = i; } if (scores[i] < scores[minIndex]) { minIndex = i; } } // 去掉最高分和最低分的打分 scores[maxIndex] = -1; // 将最高分设为无效值 scores[minIndex] = -1; // 将最低分设为无效值 // 计算平均分 float averageScore = calculateAverageScore(scores, n); // 输出结果 printf("去掉一个最高分和一个最低分后的平均分为:%.2f\n", averageScore); return 0; } // 计算平均分的函数 float calculateAverageScore(int scores[], int n) { int sum = 0; int count = 0; // 计算有效分数的总和 for (int i = 0; i < n; i++) { if (scores[i] != -1) { // 跳过无效值 sum += scores[i]; count++; } } // 计算平均分 float average = (float)sum / count; return average; }

解释和注意事项:

  • 数组处理:使用数组 scores 存储评委的打分,通过遍历数组找出最高分和最低分的索引位置。

  • 去掉最高分和最低分:将找到的最高分和最低分的索引位置处的分数设为无效值(这里设为-1)。

  • 计算平均分:通过自定义的 calculateAverageScore 函数计算有效分数的平均值。

  • 输出结果:将计算得到的平均分输出给用户,保留两位小数。

这段代码可以根据实际需要进行修改和扩展,例如增加输入检查、异常处理等功能,以提高程序的健壮性和用户体验。