用C++写一个程序:输入n个学生的学号和成绩,按成绩从高到低排序后输出,n 小于50,学号小于10位。输入格式为:输入n和n行学生的学号和成绩(有1位小数)。输出格式为:输出从高到低排序后的学号和成绩(学号后一个空格,成绩保留1位小数,每行1个学生)
时间: 2024-02-01 08:16:48 浏览: 67
以下是一个用冒泡排序法实现的示例程序:
```c++
#include <iostream>
#include <iomanip>
#include <string>
using namespace std;
// 学生结构体
struct Student {
string id; // 学号
float score; // 成绩
};
int main() {
const int MAX_N = 50; // 最大学生数
int n; // 学生数
Student students[MAX_N]; // 学生数组
// 输入学生数和成绩
cin >> n;
for (int i = 0; i < n; i++) {
cin >> students[i].id >> students[i].score;
}
// 冒泡排序(降序)
for (int i = 0; i < n - 1; i++) {
for (int j = 0; j < n - i - 1; j++) {
if (students[j].score < students[j + 1].score) {
// 交换学号和成绩
swap(students[j].id, students[j + 1].id);
swap(students[j].score, students[j + 1].score);
}
}
}
// 输出结果
for (int i = 0; i < n; i++) {
cout << students[i].id << " " << fixed << setprecision(1) << students[i].score << endl;
}
return 0;
}
```
示例输入:
```
5
1001 98.5
1002 80.0
1003 92.5
1004 85.0
1005 76.5
```
示例输出:
```
1001 98.5
1003 92.5
1004 85.0
1002 80.0
1005 76.5
```
阅读全文