题目大意
给出 n 个白细胞数量样本,先去掉一个最大值和一个最小值,用剩下 n‑2 个样本计算平均值。再在这剩下的有效样本中,求出每个样本与平均值差值的绝对值的最大值作为误差。输出平均值和误差,保留两位小数。
解题思路
读取 n,读取 n 个浮点数存入数组。
将数组从小到大排序,数组第一个元素是最小值,最后一个是最大值,二者舍弃。
把下标 1 到 n‑2 的有效样本累加求和,除以 n‑2 得到平均值。
遍历有效样本,计算每个数和平均值的差的绝对值,记录最大的绝对值,即为误差。
按格式输出平均值与误差,中间空格分隔,保留两位小数。
易错点
计算误差只使用剔除最大最小之后剩下的数据,不能使用已经删掉的两个数据。
浮点数求绝对值要用 fabs,abs 用于整数,混用会出错。
注意数组下标范围,有效区间是排序后 1~n‑2。
输出严格保留两位小数,两个数字中间要有空格。
样例演算
输入 5 个数据:12.0,13.0,11.0,9.0,10.0
排序后:9.0,10.0,11.0,12.0,13.0
去掉最小 9.0、最大 13.0,有效数据:10.0,11.0,12.0
总和 33.0,平均值 33.0÷3=11.00
分别计算差值绝对值:1.00、0.00、1.00,最大误差 1.00
输出:11.00 1.00
AC 代码