c++定义一个结构体数组存放五位学生的学号,姓名以及3门课程的成绩,编写程序从屏幕输入这五位学生的信息,对次数组按总分进行排序再打印排序后的学生信息。
时间: 2023-06-15 12:07:13 浏览: 107
下面是一个示例代码:
```c++
#include <iostream>
#include <algorithm> // 使用 std::sort 需要包含该头文件
using namespace std;
struct Student {
int id;
string name;
int score[3];
int total_score;
} stu[5]; // 定义一个长度为 5 的结构体数组
bool cmp(Student a, Student b) {
return a.total_score > b.total_score; // 按总分从大到小排序
}
int main() {
// 输入学生信息
for (int i = 0; i < 5; i++) {
cout << "请输入第 " << i+1 << " 位学生的信息" << endl;
cout << "学号:";
cin >> stu[i].id;
cout << "姓名:";
cin >> stu[i].name;
cout << "请输入三门课程的成绩:";
for (int j = 0; j < 3; j++) {
cin >> stu[i].score[j];
stu[i].total_score += stu[i].score[j]; // 计算总分
}
}
// 按总分排序
sort(stu, stu+5, cmp);
// 输出排序后的学生信息
cout << "按总分排序后的学生信息:" << endl;
for (int i = 0; i < 5; i++) {
cout << "学号:" << stu[i].id
<< " 姓名:" << stu[i].name
<< " 总分:" << stu[i].total_score << endl;
}
return 0;
}
```
注意,这里使用了一个自定义的 `cmp` 函数,用于告诉 `std::sort` 如何进行排序。`cmp` 函数接收两个参数 `a` 和 `b`,分别代表待比较的两个结构体。如果 `a` 的总分比 `b` 的总分高,则返回 `true`,否则返回 `false`。`std::sort` 根据 `cmp` 函数的返回值来进行排序。
阅读全文