用c++写5个学生,4门课,找出成绩最高的学生序号和课程,用函数实现并在主函数调用各函数
时间: 2024-10-14 20:15:46 浏览: 5
在 C++ 中,你可以创建一个名为 `Student` 的结构体来表示学生,包含姓名、学号和成绩。同时,可以定义一个 `Course` 结构体来存储课程信息。然后编写函数来管理学生列表,找到最高分的学生及其对应的课程。以下是简单的实现:
```cpp
#include <iostream>
#include <string>
#include <vector>
#include <algorithm>
// 定义学生和课程结构体
struct Course {
std::string name;
int max_score;
};
struct Student {
int id;
std::string name;
std::vector<Course> courses;
};
// 功能函数:更新课程最大分数并返回最高分学生及其课程
std::pair<int, Course*> find_highest_student_and_course(const std::vector<Student>& students) {
Course* highest_course = nullptr;
int max_score_student_id = -1;
for (const auto& student : students) {
for (auto& course : student.courses) {
if (course.max_score < course.score) { // 假设score字段记录了该学生的课程成绩
course.max_score = course.score;
highest_course = &course;
}
}
if (highest_course && (max_score_student_id == -1 || student.id > max_score_student_id)) {
max_score_student_id = student.id;
}
}
return {max_score_student_id, highest_course};
}
int main() {
// 创建示例学生数据
Student student1{1, "张三", {{"数学", 90}, {"英语", 85}}};
Student student2{2, "李四", {{"物理", 95}, {"化学", 92}}};
Student student3{3, "王五", {{"数学", 88}, {"生物", 97}}};
Student student4{4, "赵六", {{"英语", 80}, {"历史", 86}}};
Student student5{5, "刘七", {{"物理", 93}, {"地理", 89}}};
std::vector<Student> students = {student1, student2, student3, student4, student5};
// 找到最高分学生和课程
auto [highest_student_id, highest_course] = find_highest_student_and_course(students);
if (highest_student_id != -1) {
std::cout << "最高分学生(" << highest_student_id << ")的成绩是在课程 " << highest_course->name << " 中,得分为 " << highest_course->max_score << std::endl;
} else {
std::cout << "没有找到学生及对应课程" << std::endl;
}
return 0;
}
```