用c++定义学生类型,包括学号、姓名、三门课成绩等。 定义函数实现5名学生信息的输入、输出、求总分、排序等操作; 编写主函数,测试。
时间: 2024-09-08 08:02:54 浏览: 75
学生成绩管理系统(C++).doc
在C++中,我们可以使用结构体(struct)或类(class)来定义学生类型。这里以结构体为例:
```cpp
#include <iostream>
#include <vector>
#include <algorithm> // 用于std::sort
// 定义学生类型
struct Student {
int id; // 学号
std::string name; // 姓名
float scores[3]; // 三门课成绩
// 构造函数
Student(int id, std::string name, float scores1, float scores2, float scores3)
: id(id), name(name), scores{scores1, scores2, scores3} {}
};
// 输入学生信息
void inputStudent(Student& stu) {
std::cout << "输入学号: ";
std::cin >> stu.id;
std::cout << "输入姓名: ";
std::cin >> stu.name;
std::cout << "输入三门课成绩: ";
for (int i = 0; i < 3; ++i) {
std::cin >> stu.scores[i];
}
}
// 输出学生信息
void printStudent(const Student& stu) {
std::cout << "学号: " << stu.id << " 姓名: " << stu.name << " 成绩: ";
for (int i = 0; i < 3; ++i) {
std::cout << stu.scores[i] << " ";
}
std::cout << std::endl;
}
// 计算总分
float calculateTotalScore(const Student& stu) {
float total = 0;
for (float score : stu.scores) {
total += score;
}
return total;
}
// 排序函数,按照总分从高到低排序
bool sortStudentDesc(const Student& a, const Student& b) {
return calculateTotalScore(a) > calculateTotalScore(b);
}
int main() {
const int STUDENT_COUNT = 5;
std::vector<Student> students;
// 输入5名学生的信息
for (int i = 0; i < STUDENT_COUNT; ++i) {
Student stu(0, "", 0.0f, 0.0f, 0.0f);
inputStudent(stu);
students.push_back(stu);
}
// 输出5名学生的信息
std::cout << "学生信息列表:" << std::endl;
for (const Student& stu : students) {
printStudent(stu);
}
// 计算并输出所有学生的总分
std::cout << "学生总分:" << std::endl;
for (const Student& stu : students) {
std::cout << stu.name << " 总分: " << calculateTotalScore(stu) << std::endl;
}
// 按总分排序学生信息
std::sort(students.begin(), students.end(), sortStudentDesc);
// 输出排序后的学生信息
std::cout << "按总分排序后的学生信息:" << std::endl;
for (const Student& stu : students) {
printStudent(stu);
}
return 0;
}
```
在这个例子中,我们首先定义了一个`Student`结构体,包含学号、姓名和三门课成绩。然后定义了几个函数来处理学生信息的输入、输出、计算总分和排序。在`main`函数中,我们创建了一个学生信息的列表,并对这些信息进行了输入、输出和排序的测试。
阅读全文