输入正整数n,然后输入n个学生的成绩,去掉最高分,去掉最低分,求平均分。输入 两行,第一行一个正整数n,第二行用空格隔开的n个学生成绩si 输出 一个浮点数表示平均分,保留2为小数用C++写代码
时间: 2025-06-29 21:07:03 浏览: 8
为了实现这个功能,你可以使用C++编写一个简单的程序。首先,我们需要读取输入,删除最高分和最低分,然后计算剩余分数的平均值。以下是一个可能的解决方案:
```cpp
#include <iostream>
#include <vector>
#include <algorithm>
double calculate_average(int n, int scores[]) {
// 1. 创建一个动态数组存储成绩
std::vector<int> student_scores(scores, scores + n);
// 2. 排序成绩数组
std::sort(student_scores.begin(), student_scores.end());
// 3. 删除最高分和最低分
if (student_scores.size() > 2) {
student_scores.erase(student_scores.begin());
student_scores.pop_back();
}
// 4. 检查数组大小是否为0,避免除以0错误
if (student_scores.empty()) {
return 0;
}
// 5. 计算并返回平均分
double sum = 0;
for (int score : student_scores) {
sum += score;
}
return static_cast<double>(sum) / student_scores.size();
}
int main() {
int n;
std::cout << "请输入学生人数: ";
std::cin >> n;
int scores[n];
std::cout << "请输入" << n << "个学生的成绩: ";
for (int i = 0; i < n; ++i) {
std::cin >> scores[i];
}
double average_score = calculate_average(n, scores);
std::cout << "平均分为: " << fixed << setprecision(2) << average_score << "\n";
return 0;
}
```
阅读全文
相关推荐













