使用STL算法实现统计学生成绩不及格人数的功能,具体功能要求如下: (1)从控制台录入若干个学生的基本信息,包括学号、姓名、专业和成绩等; (2)使用STL容器,用来存放录入的学生信息; (3)使用STL统计算法,统计成绩不及格的人数,并显示到控制台; (4)使用STL遍历算法,输出所有学生信息。
时间: 2024-04-19 10:25:14 浏览: 122
stl实现学生成绩管理
4星 · 用户满意度95%
你可以使用STL算法来实现统计学生成绩不及格人数的功能。下面是一个示例代码,演示了如何使用STL容器和算法来完成要求的功能:
```cpp
#include <iostream>
#include <string>
#include <vector>
#include <algorithm>
struct Student {
int studentID;
std::string name;
std::string major;
double score;
};
int main() {
std::vector<Student> students;
// 输入学生信息
int numOfStudents;
std::cout << "请输入学生人数: ";
std::cin >> numOfStudents;
for (int i = 0; i < numOfStudents; ++i) {
Student student;
std::cout << "请输入学生学号: ";
std::cin >> student.studentID;
std::cout << "请输入学生姓名: ";
std::cin >> student.name;
std::cout << "请输入学生专业: ";
std::cin >> student.major;
std::cout << "请输入学生成绩: ";
std::cin >> student.score;
students.push_back(student);
}
// 统计不及格人数
int numOfFailingStudents = std::count_if(students.begin(), students.end(), [](const Student& student) {
return student.score < 60.0;
});
// 输出不及格人数
std::cout << "不及格人数: " << numOfFailingStudents << std::endl;
// 输出所有学生信息
std::cout << "所有学生信息:" << std::endl;
for (const auto& student : students) {
std::cout << "学号: " << student.studentID << std::endl;
std::cout << "姓名: " << student.name << std::endl;
std::cout << "专业: " << student.major << std::endl;
std::cout << "成绩: " << student.score << std::endl;
std::cout << std::endl;
}
return 0;
}
```
这个示例代码中,我们首先定义了一个结构体 `Student` 来表示学生的基本信息。然后使用 `std::vector<Student>` 容器来存放录入的学生信息。
在输入学生信息时,我们使用一个循环来多次录入学生的学号、姓名、专业和成绩等信息,并将每个学生的信息添加到 `students` 容器中。
接下来,使用 `std::count_if` 算法和一个 lambda 表达式来统计成绩不及格的人数。lambda 表达式用于判断学生的分数是否小于60,如果是,则返回 `true`,表示该学生不及格。
最后,使用一个循环遍历 `students` 容器,并输出每个学生的信息。
希望这个示例对你有帮助!如果你还有其他问题,请随时提问。
阅读全文