有10个学生,每个学生的数据包括学号、姓名、三门课的成绩,从键盘输入10个学生数据,输出最高分的学生数据(包括学号、姓名、3门课的成绩)。 要求:input()函数輸入10学生数据:用max() 函数找出最高分的学生数据:所有学生数据、最高分学生数据在主函数中输出。
时间: 2025-02-23 11:31:51 浏览: 30
为了实现这个功能,你需要定义一个结构体来存储学生的数据,然后使用`std::cin`从键盘读取数据,同时利用`std::vector`来保存所有的学生信息。接下来,你可以遍历这个向量,找到成绩最高的学生,然后输出其全部数据。
首先,定义一个结构体`Student`:
```cpp
#include <iostream>
#include <string>
#include <vector>
struct Student {
int id;
std::string name;
float score1, score2, score3; // 三门课程的成绩
};
```
接着,在主函数`main()`中进行以下操作:
1. 创建一个`vector<Student>`来存储学生数据
2. 使用`for`循环输入10个学生的信息并添加到`students`向量中
3. 定义一个变量`highestScoreStudent`,用来存储最高分的学生
4. 遍历学生向量,使用`std::max_element()`函数查找最高分,并更新`highestScoreStudent`
5. 输出最高分学生的所有数据
这是完整的示例代码:
```cpp
int main() {
std::vector<Student> students;
for (int i = 0; i < 10; ++i) {
Student student;
std::cout << "请输入第" << i + 1 << "个学生的学号: ";
std::cin >> student.id;
std::cout << "请输入姓名: ";
std::cin >> student.name;
std::cout << "请输入第一门课程成绩: ";
std::cin >> student.score1;
std::cout << "请输入第二门课程成绩: ";
std::cin >> student.score2;
std::cout << "请输入第三门课程成绩: ";
std::cin >> student.score3;
students.push_back(student);
}
// 找到最高分的学生
auto it = std::max_element(students.begin(), students.end(),
[](const Student& a, const Student& b) {
return a.score1 + a.score2 + a.score3 <
b.score1 + b.score2 + b.score3;
});
Student highestScoreStudent = *it;
// 输出最高分学生的数据
std::cout << "最高分学生的数据:\n";
std::cout << "学号: " << highestScoreStudent.id << "\n";
std::cout << "姓名: " << highestScoreStudent.name << "\n";
std::cout << "课程1成绩: " << highestScoreStudent.score1 << "\n";
std::cout << "课程2成绩: " << highestScoreStudent.score2 << "\n";
std::cout << "课程3成绩: " << highestScoreStudent.score3 << "\n";
return 0;
}
```
阅读全文
相关推荐



















