酷代码 AI
菜单

每次演讲结束后都有n名裁判对他们的表现进行打分,评委数量在3人以上,每个人打出的分数都是一个100以内的小数。为了保证公平,最后的结果是去掉全部评分的最高分和最低分,取平均分,并且还要将剩余的有效评分从低到高输出在屏幕上,提供给观众查看。请你来编写这个程序吧。 【提示】 利用排序函数排序后,可以只把第2到第n-1项求和,并只输出第2到第n-1项。 输入: 共两行。 第一行为一个整数n(3<=n<=100),表示总评委数。 第二行为n个小数,即每个评委打出的分数。 输出: 共两行。 第一行为一个小数,即去掉最高分和最低分后的平均分。(计算结果可能为小数,也可能为整数) 第二行为n-2个小数,即从低到高的有效分数,相邻数字之间用空格隔开。c++。用冒泡法解决

```cpp #include <iostream> #include <iomanip> // 冒泡排序函数 void bubbleSort(double arr[], int n) { for (int i = 0; i < n - 1; i++) { for (int j = 0; j < n - i - 1; j++) { if (arr[j] > arr[j + 1]) { double temp = arr[j]; arr[j] = arr[j + 1]; arr[j + 1] = temp; } } } } int main() { int n; std::cin >> n; double scores[100]; for (int i = 0; i < n; i++) { std::cin >> scores[i]; } // 冒泡排序 bubbleSort(scores, n); 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. 冒泡排序函数 `bubbleSort`:该函数实现了冒泡排序算法,用于对评委的打分进行排序。通过多次比较相邻元素并交换位置,将数组按从小到大的顺序排列。 2. 主函数 `main`: - 读取评委的数量 `n`。 - 读取每个评委的打分并存储在数组 `scores` 中。 - 调用 `bubbleSort` 函数对打分进行排序。 - 计算去掉最高分和最低分后的总分 `sum`,并计算平均分 `average`。 - 输出平均分,使用 `std::fixed` 和 `std::setprecision(1)` 确保输出结果保留一位小数。 - 输出从低到高的有效分数,相邻数字之间用空格隔开。 复杂度分析: - 时间复杂度:冒泡排序的时间复杂度为 $O(n^2)$,其中 $n$ 是评委的数量。 - 空间复杂度:代码使用了一个大小为 $n$ 的数组来存储评委的打分,因此空间复杂度为 $O(n)$。 [2026-01-24 15:46:40 | AI问答 | 616点数解答]

服务商
相关提问
发财导航,免费问AI
实用工具查看更多