一只猪


私信TA

用户名:TuT99

访问量:6873

签 名:

拥有良好的积累,并且一直在路上,我相信自己有无限的可能

等  级
排  名 74
经  验 9634
参赛次数 6
文章发表 68
年  龄 21
在职情况 学生
学  校 哔哩哔哩大学
专  业 计算机科学与技术

  自我简介:

参考代码:

#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 人评分

看不懂代码?想转换其他语言的代码? 或者想问其他问题? 试试问问AI编程助手,随时响应你的问题:

编程语言转换

万能编程问答  

代码解释器

代码纠错

SQL生成与解释

  评论区