编写C++程序实现下列要求: 逾六 有5个学生的数据,每个学生的数据包括学号、姓名、年龄、成绩(3门课),从键盘输入5个学生的数据,要求计算出每个学生的平均分,并将平均分最高的和最低的学生的信息输出(学号、姓名、年龄、成绩(3门课)、平均分)。
时间: 2025-01-02 14:45:59 浏览: 6
要编写一个C++程序来满足这个要求,你需要创建一个结构体表示学生信息,然后定义一个函数用于获取用户输入并计算平均分数。最后,你需要遍历所有学生找出最高和最低的平均分以及对应的学号、姓名、年龄、成绩和平均分。以下是简单的示例代码:
```cpp
#include <iostream>
#include <string>
#include <vector>
// 定义学生信息结构体
struct Student {
int id;
std::string name;
int age;
std::vector<int> scores; // 存储三门课程的成绩
};
// 函数用于获取用户输入并计算平均分
void input_and_calculate_average(Student& student) {
for (int i = 0; i < 3; ++i) {
std::cout << "请输入第" << (i + 1) << "门课程的成绩: ";
int score;
std::cin >> score;
student.scores.push_back(score);
}
double average = static_cast<double>(student.scores.sum()) / 3; // 使用C++20的sum函数计算总分
std::cout << "学生 " << student.id << " 的平均分为: " << average << std::endl;
}
int main() {
const int num_students = 5;
Student students[num_students];
// 获取用户输入
for (int i = 0; i < num_students; ++i) {
std::cout << "请输入第" << (i + 1) << "名学生的信息: \n";
std::cout << "学号: ";
std::cin >> students[i].id;
std::cout << "姓名: ";
std::cin >> students[i].name;
std::cout << "年龄: ";
std::cin >> students[i].age;
input_and_calculate_average(students[i]);
}
// 找到最高和最低平均分及对应学生
double highest_avg = *std::min_element(&students[0].average, &students[num_students].average);
double lowest_avg = *std::max_element(&students[0].average, &students[num_students].average);
// 输出最高和最低平均分的学生信息
for (int i = 0; i < num_students; ++i) {
if (students[i].average == highest_avg) {
std::cout << "最高平均分: 学号 " << students[i].id << ", 姓名 " << students[i].name << ", 年龄 " << students[i].age << ", 成绩: ";
for (const auto& score : students[i].scores) {
std::cout << score << " ";
}
std::cout << ", 平均分: " << students[i].average << std::endl;
} else if (students[i].average == lowest_avg) {
std::cout << "最低平均分: 学号 " << students[i].id << ", 姓名 " << students[i].name << ", 年龄 " << students[i].age << ", 成绩: ";
for (const auto& score : students[i].scores) {
std::cout << score << " ";
}
std::cout << ", 平均分: " << students[i].average << std::endl;
}
}
return 0;
}
```
注意:上述代码假设你正在使用支持`std::vector`和`<algorithm>`库的现代C++编译器,例如C++17及以上版本。如果你的环境不支持这些特性,可能需要调整部分代码。此外,这里并未处理异常情况,如用户输入非数字等。
阅读全文