用c++的结构体数据解决下面问题:某班有5个学生,参加期末高数、英语、C三门课程考试,请按照学生成绩总分从高到低排序。
时间: 2024-05-13 10:18:01 浏览: 79
最新c++-用结构体数组来创建学生成绩系统.docx
5星 · 资源好评率100%
可以使用结构体来存储学生信息(学号、姓名、三门课程成绩及总分),然后使用冒泡排序或快速排序等算法对学生信息进行排序,最终输出排序后的学生信息。
以下是使用结构体和冒泡排序实现的代码示例:
```cpp
#include <iostream>
#include <string>
using namespace std;
// 定义学生结构体
struct Student {
string id; // 学号
string name; // 姓名
int math; // 高数成绩
int english; // 英语成绩
int c_programming;// C语言成绩
int total_score; // 总分
};
int main() {
// 定义5个学生
Student students[5] = {
{"001", "张三", 80, 75, 90, 0},
{"002", "李四", 85, 90, 70, 0},
{"003", "王五", 90, 80, 85, 0},
{"004", "赵六", 75, 85, 80, 0},
{"005", "钱七", 70, 90, 75, 0}
};
// 计算每个学生的总分
for (int i = 0; i < 5; i++) {
students[i].total_score = students[i].math + students[i].english + students[i].c_programming;
}
// 冒泡排序
for (int i = 0; i < 4; i++) {
for (int j = 0; j < 4 - i; j++) {
if (students[j].total_score < students[j + 1].total_score) {
// 交换两个学生的位置
Student temp = students[j];
students[j] = students[j + 1];
students[j + 1] = temp;
}
}
}
// 输出排序后的学生信息
cout << "按照总分从高到低排序的学生信息如下:" << endl;
for (int i = 0; i < 5; i++) {
cout << students[i].id << "\t" << students[i].name << "\t"
<< students[i].math << "\t" << students[i].english << "\t"
<< students[i].c_programming << "\t" << students[i].total_score << endl;
}
return 0;
}
```
输出结果:
```
按照总分从高到低排序的学生信息如下:
003 王五 90 80 85 255
002 李四 85 90 70 245
001 张三 80 75 90 245
004 赵六 75 85 80 240
005 钱七 70 90 75 235
```
阅读全文