c语言,n个评委打分,去掉一个最高分和一个最低分,然后得选手平均分
在C语言中实现去掉一个最高分和一个最低分后,对选手的平均分计算,可以按照以下步骤进行:
输入评委打分:首先需要从用户获取n个评委的打分,可以使用数组来存储这些分数。
找出最高分和最低分:遍历数组找到最高分和最低分的值及其对应的索引位置。
去掉最高分和最低分:通过将找到的最高分和最低分对应的索引位置设为无效值(例如-1或其他不可能的分数),从而在计算平均分时忽略这两个分数。
计算平均分:对有效的分数进行求和,并计算平均值。
输出结果:将计算得到的平均分输出给用户。
下面是一个示例代码:
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
函数计算有效分数的平均值。输出结果:将计算得到的平均分输出给用户,保留两位小数。
这段代码可以根据实际需要进行修改和扩展,例如增加输入检查、异常处理等功能,以提高程序的健壮性和用户体验。