参考代码:
#include <iostream>
#include <vector>
#include <algorithm>
#include <cmath>
#include <iomanip>
using namespace std;
int main() {
int n;
cin >> n;
vector<double> samples(n);
for (int i = 0; i < n; ++i) {
cin >> samples[i];
}
sort(samples.begin(), samples.end()); // 对样本进行排序
double sum = 0.0;
for (int i = 1; i < n - 1; ++i) {
sum += samples[i];
}
double average = sum / (n - 2); // 平均白细胞数量
double maxDiff = 0.0;
for (int i = 1; i < n - 1; ++i) {
maxDiff = max(maxDiff, abs(samples[i] - average));
}
cout << fixed << setprecision(2) << average << " " << maxDiff << endl;
return 0;
}
代码解析:
首先读取输入的正整数 n,表示总共有 n 个样本。接下来定义一个空的 vector samples 来存放样本值。
通过循环读取 n 行浮点数,将它们存放到 samples 中。然后使用 sort() 函数对样本进行排序,以便去除最大和最小样本。
然后,使用变量 sum 来计算除去最大和最小样本之外的样本的总和。通过循环遍历从 1 到 n-2 的位置(即除去最大和最小样本的位置),将对应的样本值累加到 sum 中。
接下来,计算平均白细胞数量,将 sum 除以 (n-2) 得到平均值。
然后,使用变量 maxDiff 来计算误差。通过循环遍历从 1 到 n-2 的位置,逐个计算有效样本与平均值的差的绝对值,并更新 maxDiff 的值为最大差值。
最后,使用 fixed 和 setprecision(2) 来输出两位小数的结果,并将平均白细胞数量和误差输出。
0.0分
22 人评分
C语言程序设计教程(第三版)课后习题11.5 (C语言代码)浏览:638 |
多输入输出练习1 (C语言代码)浏览:1195 |
蛇行矩阵 (C语言代码)浏览:768 |
C语言程序设计教程(第三版)课后习题7.1 (C语言代码)浏览:526 |
【蟠桃记】 (C语言代码)浏览:673 |
WU-输出九九乘法表 (C++代码)浏览:1730 |
WU-整除问题 (C++代码)浏览:619 |
WU-C语言程序设计教程(第三版)课后习题12.1 (C++代码)浏览:958 |
printf基础练习2 (C语言代码)浏览:633 |
简单的a+b (C语言代码)浏览:437 |