测评会员优惠活动进行中 · 开通 VIP,有效期内测评不限次 VIP 优惠中 · 测评不限次 立即查看

A18893. 学生成绩冒泡排序

填空题 中等

题目描述

学生成绩冒泡排序

题目描述

定义一个结构体 Student,包含姓名、学号、分数三个成员变量。

现有 3 名学生信息,存入结构体数组中,使用冒泡排序算法,按照分数从小到大对学生数据进行排序,并输出排序后的所有学生信息。

已知初始数据

姓名学号分数
小明185
小红292
小刚378

编程要求

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; }
上一题 下一题