酷代码 AI
菜单
服务商

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

### 🔍 思路分析 本题需要实现一个程序,根据输入的评委数量和每个评委的打分,去掉最高分和最低分后计算平均分,并输出剩余的有效评分。具体步骤如下: 1. 读取评委数量 `n`。 2. 读取每个评委的打分并存储在数组中。 3. 对数组进行排序。 4. 计算去掉最高分和最低分后的平均分。 5. 输出平均分和剩余的有效评分。 ### 💻 代码实现 ```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 << std::fixed << std::setprecision(1) << scores[i]; } std::cout << std::endl; return 0; } ``` ### 📝 代码解释 1. **输入读取**:使用 `std::cin` 读取评委数量 `n` 和每个评委的打分,并将打分存储在 `std::vector<double>` 中。 2. **排序**:使用 `std::sort` 函数对分数进行排序。 3. **计算平均分**:去掉最高分和最低分后,计算剩余分数的总和,并除以剩余分数的数量得到平均分。 4. **输出结果**:使用 `std::fixed` 和 `std::setprecision(1)` 控制输出的小数位数,先输出平均分,再输出剩余的有效评分。 ### ⚙️ 复杂度分析 - **时间复杂度**:排序操作的时间复杂度为 $O(n log n)$,遍历数组计算总分的时间复杂度为 $O(n)$,因此总的时间复杂度为 $O(n log n)$。 - **空间复杂度**:使用了一个长度为 `n` 的数组来存储分数,因此空间复杂度为 $O(n)$。 ### 🚀 开发建议 - **输入验证**:可以添加输入验证,确保输入的评委数量在 3 到 100 之间,并且每个分数在 0 到 100 之间。 - **异常处理**:可以添加异常处理,当输入不合法时输出错误信息。 - **代码复用**:可以将计算平均分和输出有效评分的逻辑封装成函数,提高代码的复用性。 ######[AI写代码神器 | 760点数解答 | 2026-05-23 20:01:25]

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