在C语言中计算8个评委打分的平均分(去掉最高分和最低分)的核心步骤是:用数组存储分数,遍历找出极值并剔除,最后对剩余6个分数求均值。 以下是具体实现方法:
-
数组存储与输入处理
定义长度为8的数组(如float scores[8]
),通过循环配合scanf
逐个读取评委分数。需添加输入校验(如0-100分范围),防止非法数据影响结果。 -
极值查找与剔除
初始化max
和min
变量为数组首元素,遍历比较更新极值。高效做法是单次遍历同时标记极值位置,避免排序(节省时间复杂度)。例如:c复制
for (int i = 0; i < 8; i++) { if (scores[i] > max) max = scores[i]; if (scores[i] < min) min = scores[i]; }
-
计算有效平均值
二次遍历数组,累加非极值得分并除以6。注意浮点数精度处理:使用double
类型,输出时用%.2f
保留两位小数。示例代码段:c复制
double sum = 0; for (int i = 0; i < 8; i++) { if (scores[i] != max && scores[i] != min) sum += scores[i]; } double avg = sum / 6;
-
边界情况处理
若所有分数相同,需避免除以零错误。可增加判断逻辑:c复制
if (max == min) avg = max; // 所有分数一致时直接取原值
总结:核心逻辑为“存数-找极值-求均值”,注意输入校验和精度控制。实际应用中可封装为函数提升代码复用性。