酷代码 AI
菜单
服务商

C++实现演讲比赛分数计算与输出

### 代码实现 ```cpp #include <iostream> #include <iomanip> #include <algorithm> #include <vector> int main() { int n; std::cin >> n; // 输入评委数量 std::vector<double> scores(n); for (int i = 0; i < n; i++) { std::cin >> scores[i]; // 输入每个评委的分数 } // 对分数进行排序 std::sort(scores.begin(), scores.end()); double sum = 0; for (int i = 1; i < n - 1; i++) { sum += scores[i]; // 累加去掉最高分和最低分后的分数 } double average = sum / (n - 2); // 计算平均分 std::cout << std::fixed << std::setprecision(1) << average << std::endl; // 输出平均分,保留一位小数 for (int i = 1; i < n - 1; i++) { if (i > 1) { std::cout << " "; } std::cout << scores[i]; // 输出有效分数 } std::cout << std::endl; return 0; } ``` ### 代码解释 1. **输入处理**: - 首先读取一个整数`n`,表示评委的数量。 - 然后使用`std::vector`存储每个评委的分数,通过循环读取`n`个小数。 2. **排序**: - 使用`std::sort`函数对存储分数的向量进行排序,排序后分数从低到高排列。 3. **计算平均分**: - 去掉最高分(最后一个元素)和最低分(第一个元素),对中间的`n - 2`个分数求和。 - 用总和除以`n - 2`得到平均分。 4. **输出结果**: - 第一行输出平均分,使用`std::fixed`和`std::setprecision(1)`确保输出保留一位小数。 - 第二行输出去掉最高分和最低分后的有效分数,相邻分数用空格隔开。 ### 开发建议 1. **输入验证**:在实际应用中,应该对输入进行验证,确保`n`在`3`到`100`之间,并且每个分数在`0`到`100`之间。 2. **异常处理**:可以添加异常处理机制,例如当输入不是有效的数字时,给出相应的错误提示。 3. **代码复用**:将计算平均分和输出有效分数的逻辑封装成独立的函数,提高代码的复用性。 ######[AI写代码神器 | 631点数解答 | 2026-03-27 20:16:14]

相关提问
本站限时免费提问中
实用工具查看更多
Linux在线手册 [开发类]
Jquery在线手册 [开发类]
今日油价 [生活类]
图片互转base64 [开发类]
时间转换器 [开发类]