编写float fun,统计出若干个学生的平均成绩,最高分以及得最高分的人数
时间: 2023-06-09 21:03:38 浏览: 42
好的,我可以帮你回答这个问题。以下是一个可能的解法:
```c++
#include <iostream>
#include <vector>
float fun(const std::vector<float>& grades, float& max_grade, int& max_count) {
// 计算平均成绩
float total = 0.0;
for (const auto& grade : grades) {
total += grade;
}
float mean = total / grades.size();
// 找出最高分和得最高分的人数
max_grade = grades.front();
max_count = 1;
for (const auto& grade : grades) {
if (grade > max_grade) {
max_grade = grade;
max_count = 1;
} else if (grade == max_grade) {
max_count++;
}
}
// 返回平均成绩
return mean;
}
int main() {
std::vector<float> grades{95, 85, 90, 92, 89, 95, 100};
float max_grade;
int max_count;
float mean = fun(grades, max_grade, max_count);
std::cout << "平均成绩: " << mean << std::endl;
std::cout << "最高分: " << max_grade << std::endl;
std::cout << "得最高分的人数: " << max_count << std::endl;
return 0;
}
```
在这个解法中,我们定义了一个名为 `fun` 的函数,它接受一个 `std::vector<float>` 类型的参数 `grades`,表示所有学生的成绩。该函数返回平均成绩,同时通过引用参数 `max_grade` 和 `max_count` 返回最高分和得最高分的人数。
在函数内部,我们先计算了所有成绩的总和,然后除以学生人数得到了平均成绩。接着,我们通过遍历所有成绩,找出了最高分和得最高分的人数。注意,由于最高分可能有多个人得到,我们使用了一个计数器来记录人数。
最后,在 `main` 函数中,我们定义了一个具有一些样本数据的成绩数组,并调用了 `fun` 函数来获取平均成绩、最高分和得最高分的人数。我们通过 `std::cout` 输出了这些结果。
希望这个解法可以帮助你解决这个问题!