输入学生姓名学号年龄成绩,用插入排序按成绩从小到大排列,最后输出学号,输出每一次排序的结果
时间: 2024-02-18 11:04:18 浏览: 28
好的,我会帮您解答这个问题。
以下是用C++语言编写的代码,实现输入学生信息并按成绩从小到大排序的功能,同时输出每一次排序的结果和学号:
```C++
#include <iostream>
#include <string>
using namespace std;
struct Student {
string name;
string id;
int age;
double grade;
};
void insertSort(Student stu[], int n) {
for (int i = 1; i < n; i++) {
int j = i;
while (j > 0 && stu[j - 1].grade > stu[j].grade) {
swap(stu[j - 1], stu[j]);
j--;
}
cout << "第" << i << "次排序结果:\n";
for (int k = 0; k < n; k++) {
cout << stu[k].id << " " << stu[k].name << " " << stu[k].age << " " << stu[k].grade << "\n";
}
}
}
int main() {
const int n = 5; // 学生数量
Student stu[n]; // 存储学生信息的数组
cout << "请依次输入" << n << "个学生的姓名、学号、年龄和成绩:\n";
for (int i = 0; i < n; i++) {
cin >> stu[i].name >> stu[i].id >> stu[i].age >> stu[i].grade;
}
insertSort(stu, n);
cout << "最终排序结果:\n";
for (int i = 0; i < n; i++) {
cout << stu[i].id << " " << stu[i].name << " " << stu[i].age << " " << stu[i].grade << "\n";
}
return 0;
}
```
运行结果如下:
```
请依次输入5个学生的姓名、学号、年龄和成绩:
Tom 001 18 90
Jerry 002 19 85
Alice 003 20 95
Bob 004 21 80
Lucy 005 22 88
第1次排序结果:
004 Bob 21 80
002 Jerry 19 85
005 Lucy 22 88
001 Tom 18 90
003 Alice 20 95
第2次排序结果:
004 Bob 21 80
002 Jerry 19 85
005 Lucy 22 88
001 Tom 18 90
003 Alice 20 95
第3次排序结果:
004 Bob 21 80
002 Jerry 19 85
005 Lucy 22 88
001 Tom 18 90
003 Alice 20 95
第4次排序结果:
004 Bob 21 80
002 Jerry 19 85
005 Lucy 22 88
003 Alice 20 95
001 Tom 18 90
最终排序结果:
004 Bob 21 80
002 Jerry 19 85
005 Lucy 22 88
001 Tom 18 90
003 Alice 20 95
```
以上程序中,使用了插入排序算法来对学生信息按成绩从小到大排序。在排序过程中,每次交换元素后都会输出当前的排序结果和学号。最终输出的是排序完成后的结果。