A18893. 学生成绩冒泡排序
填空题
中等
知识点
题目描述
学生成绩冒泡排序
题目描述
定义一个结构体 Student,包含姓名、学号、分数三个成员变量。
现有 3 名学生信息,存入结构体数组中,使用冒泡排序算法,按照分数从小到大对学生数据进行排序,并输出排序后的所有学生信息。
已知初始数据
| 姓名 | 学号 | 分数 |
|---|---|---|
| 小明 | 1 | 85 |
| 小红 | 2 | 92 |
| 小刚 | 3 | 78 |
编程要求
1.完整写出 C++ 代码,包含结构体定义、结构体数组初始化;
2.使用冒泡排序实现升序排列;
3.按格式输出排序后的每位学生的姓名、学号、分数;
4.代码书写规范,变量命名清晰。
输出格式
第一行输出提示文字:排序后(分数从低到高):
后续每行依次输出一名学生的姓名、学号、分数,数据之间用空格隔开。
参考答案
#include <iostream>
#include <string>
using namespace std;
// 定义学生结构体:包含姓名、学号、分数
struct Student
{
string name; // 姓名
int id; // 学号
int score; // 分数
};
int main()
{
// 初始化结构体数组,存储3名学生信息
Student stu[3] = {
{"小明", 1, 85},
{"小红", 2, 92},
{"小刚", 3, 78}
};
int n = 3; // 学生总人数
// 冒泡排序:按分数从小到大升序排序
// 外层循环:控制排序轮数
for (int i = 0; i < n - 1; i++)
{
// 内层循环:每一轮相邻元素两两比较
for (int j = 0; j < n - 1 - i; j++)
{
// 前一个学生分数 > 后一个学生分数,交换两个结构体数据
if (stu[j].score > stu[j+1].score)
{
Student t = stu[j];
stu[j] = stu[j+1];
stu[j+1] = t;
}
}
}
// 输出排序结果
cout << "排序后(分数从低到高):" << endl;
for (int i = 0; i < n; i++)
{
cout << stu[i].name << " "
<< stu[i].id << " "
<< stu[i].score << endl;
}
return 0;
}
上一题
下一题