酷代码 AI
菜单
服务商

上周我们完成了一场测试,现在zpl老师要知道班上的最高分和最低分。每个学生的信息包含了学生的姓名和成绩,请你给学生们排个名,并输出班上最高分和最低分同学的姓名和成绩(如果有并列就按输入顺序输出)(c++)

以下是一个用 C++ 编写的程序,用于对学生信息进行排序,并输出班上最高分和最低分同学的姓名和成绩: ```cpp #include <iostream> #include <vector> #include <algorithm> // 定义学生结构体,包含姓名和成绩 struct Student { std::string name; int score; }; // 比较函数,用于按成绩从高到低排序 bool compareStudents(const Student& a, const Student& b) { return a.score > b.score; } int main() { // 存储学生信息的向量 std::vector<Student> students; int n; std::cout << "请输入学生的数量: "; std::cin >> n; // 输入每个学生的姓名和成绩 for (int i = 0; i < n; ++i) { Student s; std::cout << "请输入第 " << i + 1 << " 个学生的姓名: "; std::cin >> s.name; std::cout << "请输入第 " << i + 1 << " 个学生的成绩: "; std::cin >> s.score; students.push_back(s); } // 对学生信息按成绩从高到低排序 std::sort(students.begin(), students.end(), compareStudents); // 输出排序后的学生信息 std::cout << "学生成绩排名如下:" << std::endl; for (const auto& s : students) { std::cout << s.name << ": " << s.score << std::endl; } // 输出最高分和最低分同学的信息 std::cout << "最高分同学: " << students.front().name << ", 成绩: " << students.front().score << std::endl; std::cout << "最低分同学: " << students.back().name << ", 成绩: " << students.back().score << std::endl; return 0; } ``` 代码注释解释: 1. `Student` 结构体:用于存储每个学生的姓名和成绩。 2. `compareStudents` 函数:作为 `std::sort` 的比较函数,用于按成绩从高到低排序。 3. `main` 函数: - 首先,提示用户输入学生的数量。 - 然后,循环输入每个学生的姓名和成绩,并将其存储在 `students` 向量中。 - 接着,使用 `std::sort` 对 `students` 向量进行排序。 - 之后,输出排序后的学生信息。 - 输出最高分和最低分同学的姓名和成绩。 我在以往的开发过程中,碰到过以下几点需要格外小心处理的地方: 1. 输入成绩时要确保输入的是有效的整数,否则可能会导致程序出错。 2. 当学生数量为 0 时,程序可能会出现越界访问的问题,需要进行特殊处理。 3. 在使用 `std::sort` 时,要确保比较函数的逻辑正确,否则可能会导致排序结果不符合预期。 [2025-11-30 20:44:21 | AI写代码神器 | 708点数解答]

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