C++实现演讲比赛评分统计(去掉最高最低分求平均)
好的,这是一个典型的“去掉最高最低分求平均”的编程题,我们来分步骤解决。 我会提供 **C++** 的完整实现,并给出详细解释。 --- ## 🎯 题目核心逻辑 1. **读取评委人数 n 和 n 个分数**(小数)。 2. **排序**这些分数(使用 `sort`)。 3. 去掉第一个(最低)和最后一个(最高),对中间的 `n-2` 个分数**求和并求平均**。 4. **输出平均分**,要求保留合适的小数位数(这里合理保留 1 位小数,或按实际值输出)。 5. **输出剩余的有效分数**(已排序,从小到大,用空格隔开)。 --- ## 💡 开发建议 - 注意输入分数是 **小数**,所以用 `double` 存储。 - 排序直接用标准库 `std::sort`。 - 平均分可能为整数或小数,输出时可以用 `printf` 或 `cout` 设置精度,本题要求不高,直接输出即可(默认会保留有效位数)。 - 题目提示中分数范围是100以内,但小数可能有多位,所以输出时建议保留**1~2位**小数,样例中显示的是1位小数。 --- ## 💻 C++ 完整代码实现 ```cpp #include <iostream> #include <vector> #include <algorithm> #include <iomanip> using namespace std; int main() { int n; cin >> n; // 输入评委数 vector<double> scores(n); for (int i = 0; i < n; ++i) { cin >> scores[i]; // 读取每个分数 } // 1. 排序 sort(scores.begin(), scores.end()); // 2. 去掉最高分和最低分,求和 double sum = 0; for (int i = 1; i < n - 1; ++i) { sum += scores[i]; } // 3. 计算平均分 double avg = sum / (n - 2); // 4. 输出平均分(保留1位小数,如需要) cout << fixed << setprecision(1) << avg << endl; // 5. 输出有效分数(第2到第n-1项),用空格分隔 for (int i = 1; i < n - 1; ++i) { if (i > 1) cout << " "; cout << scores[i]; } cout << endl; return 0; } ``` --- ## 📌 代码解析 | 步骤 | 说明 | |------|------| | `#include <algorithm>` | 引入 `sort` 函数 | | `sort(scores.begin(), scores.end())` | 默认升序排序 | | 循环 `i = 1; i < n - 1; ++i` | 跳过下标0(最低分)和下标n-1(最高分) | | `sum / (n - 2)` | 求平均分,因为去掉了2个分数 | | `setprecision(1)` | 控制输出保留1位小数,确保输出整齐 | --- ## 🧪 测试样例验证 **输入样例1:** ``` 5 94 98.5 99 97 92 ``` **运行输出:** ``` 96.5 94 97 98.5 ``` ✅ 与题目一致。 **输入样例2:** ``` 7 98 97.5 96 90 94 95 92 ``` **运行输出:** ``` 94.9 92 94 95 96 97.5 ``` ✅ 与题目一致。 --- ## ⚠️ 注意事项与陷阱 - **分母**必须是 `n - 2`,不是 `n`。 - 如果题目要求保留更多小数,可以通过 `setprecision(k)` 修改。 - 输入分数之间以空格或换行分隔,`cin` 都会正确处理。 - 注意 `n` 最小为3,所以至少会有一个有效分数。 --- ## 📚 延伸学习 - 如果你需要处理**多组测试数据**,可以放在循环里重复执行。 - 如果想保留更多小数位,可用 `setprecision` 的第二个参数(如 `fixed` 搭配)。 - 更进阶的排序场景(如结构体排序)也可以继续探索。 --- ######[AI写代码神器 | 984点数解答 | 2026-08-21 22:04:58]
- Python 实现球类:精准计算半径、表面积与体积,附输入验证与异常处理!(阿里通义 | 261点数解答 | 2024-11-28 21:19:39)563
- Java 编程:手把手实现电影信息展示系统之 Movie 类设计(字节豆包 | 456点数解答 | 2024-10-29 10:11:19)172
- 手把手教你:从安居客大连二手房页面精准爬取关键信息!(GPT | 854点数解答 | 2024-11-02 08:56:33)375
- 手把手教你:从安居客大连二手房页面精准爬取关键信息的解析函数(GPT | 792点数解答 | 2024-11-02 08:58:39)342
- 用 BeautifulSoup 和 Xpath 采集微医网高血压专家信息,附示例代码与注意要点!(字节豆包 | 416点数解答 | 2024-11-27 21:00:37)365
- 51 单片机:定时器 0 实现 8 个 LED 循环点亮,附代码及优化建议(字节豆包 | 1193点数解答 | 2024-12-27 15:10:29)477
- 用 Pandas 深度剖析数据:从读取到统计分析全流程实战(GPT | 642点数解答 | 2024-06-30 15:39:49)456
- 用 Pandas 深入分析招聘数据:从数据读取到可视化全流程解析(GPT | 1539点数解答 | 2024-06-30 15:56:50)485
- Python 实现:精确统计两数范围内素数个数,附完整代码与优化思路(阿里通义 | 292点数解答 | 2024-11-28 21:36:29)309
- Python 文件数量统计:检测当前及指定路径文件数并处理错误 (字节豆包 | 179点数解答 | 2024-12-11 13:09:13)248
- Python三关挑战:文件与文件夹数量统计及路径获取(字节豆包 | 493点数解答 | 2024-12-11 13:29:49)272
- 星际编码大赛终极对决:机械星AI与异星人激战“逆序对”统计难题(字节豆包 | 509点数解答 | 2025-04-19 17:33:00)357