题解:洛谷 P5726 【深基4.习9】打分

【题目来源】

洛谷:P5726 【深基4.习9】打分 - 洛谷

【题目描述】

现在有 \(n(n\le 1000)\) 位评委给选手打分,分值从 \(0\)\(10\)。需要去掉一个最高分,去掉一个最低分(如果有多个最高或者最低分,也只需要去掉一个),剩下的评分的平均数就是这位选手的得分。现在输入评委人数和他们的打分,请输出选手的最后得分,精确到 \(2\) 位小数。

【输入】

第一行输入一个正整数 \(n\),表示有 \(n\) 个评委。

第二行输入 \(n\) 个正整数,第 \(i\) 个正整数表示第 \(i\) 个评委打出的分值。

【输出】

输出一行一个两位小数,表示选手的最后得分。

【输入样例】

5 9 5 6 8 9

【输出样例】

7.67

【算法标签】

《洛谷 P5726 打分》 #模拟#

【代码详解】

#include <bits/stdc++.h>  // 包含标准库头文件(万能头文件)
using namespace std;      // 使用标准命名空间

/**
 * 主函数 - 程序入口
 * @return 程序执行状态码(0表示成功)
 */
int main()
{
    int n;               // 定义变量:数据个数
    int t;               // 定义变量:临时存储输入的数据
    int max, min;        // 定义变量:最大值和最小值
    int sum = 0;         // 定义变量:数据总和,初始化为0
  
    cin >> n;            // 输入数据个数
    cin >> t;            // 输入第一个数据
  
    // 初始化最大值、最小值和总和
    max = t;
    min = t;
    sum += t;
  
    // 遍历剩余的数据
    for (int i = 1; i < n; i++) 
    {
        cin >> t;        // 输入当前数据
        sum += t;        // 累加到总和
      
        // 更新最大值
        if (max < t) 
            max = t;
      
        // 更新最小值
        if (min > t) 
            min = t;
    }
  
    // 计算去掉一个最高分和一个最低分后的平均值
    double ans = 1.0 * (sum - max - min) / (n - 2);
  
    // 输出结果,保留两位小数
    printf("%.2f", ans);
  
    return 0;            // 程序正常结束
}

【运行结果】

5
9 5 6 8 9
7.67
posted @ 2026-02-16 15:25  团爸讲算法  阅读(3)  评论(0)    收藏  举报