白细胞计数-题解

描述

医院采样了某临床病例治疗期间的白细胞数量样本n份,用于分析某种新抗生素对该病例的治疗效果。
为了降低分析误差,要先从这n份样本中去除一个数值最大的样本和一个数值最小的样本,然后将剩余n-2个有效样本的平均值作为分析指标。
同时,为了观察该抗生素的疗效是否稳定,还要给出该平均值的误差,即所有有效样本(即不包括已扣除的两个样本)与该平均值之差的绝对值的最大值。

现在请你编写程序,根据提供的n个样本值,计算出该病例的平均白细胞数量和对应的误差。

输入描述

输入的第一行是一个正整数n(2 < n <= 1000),表明共有n个样本。

以下共有n行,每行为一个浮点数,为对应的白细胞数量,其单位为109/L。数与数之间以一个空格分开。

输出描述

输出为两个浮点数,中间以一个空格分开。分别为平均白细胞数量和对应的误差,单位也是109/L。计算结果需保留到小数点后2位。

代码

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
#include <bits/stdc++.h>
using namespace std;

int main() {
int n, max_n = 0, min_n = 0;
double max = 0.0, min = 10000.0;
double sum = 0.0, a = 0.0, b = 0.0, Max = 0.0;

cin >> n;
double in[n];
for (int i = 0; i < n; i++) {
cin >> in[i];
sum += in[i];
if (in[i] > max) {
max = in[i];
max_n = i;
}
if (in[i] < min) {
min = in[i];
min_n = i;
}
}

a = (sum - max - min) / (n - 2);
for (int i = 0; i < n; i++) {
if (i != max_n && i != min_n) {
b = fabs(in[i] - a);
if (b > Max) {
Max = b;
}
}
}
printf("%.2lf %.2lf", a, Max);
return 0;
}

白细胞计数-题解
https://chenxi-tijie.pages.dev/2025/07/白细胞计数-题解/
作者
chenxi
发布于
2025年7月4日
许可协议