编写一个C++程序,随机产生20个学生的计算机课程的成绩(0~100),使用选择排序法,按照从大到小的顺序排序,分别显示排序前和排序后的结果。
时间: 2024-10-18 14:10:29 浏览: 18
当你想要编写一个C++程序来实现这个任务,你需要首先包含必要的头文件,然后定义一个结构体表示学生和他们的成绩。接着,你可以创建一个数组来存储20个学生的成绩,并使用选择排序算法对它们进行排序。最后,你会打印出排序前后的列表。下面是一个简单的示例:
```cpp
#include <iostream>
#include <cstdlib> // 需要用到random库生成随机数
#include <ctime> // 设置时间种子
// 定义学生结构体
struct Student {
int id;
int score;
};
// 选择排序函数
void selectionSort(Student arr[], int n) {
for (int i = 0; i < n - 1; ++i) {
int max_idx = i;
for (int j = i + 1; j < n; ++j) {
if (arr[j].score > arr[max_idx].score) {
max_idx = j;
}
}
// 将最大值放到已排序部分的末尾
if (max_idx != i) {
Student temp = arr[i];
arr[i] = arr[max_idx];
arr[max_idx] = temp;
}
}
}
int main() {
// 初始化随机数生成器
srand(time(0));
// 创建并初始化20个学生的成绩
const int num_students = 20;
Student students[num_students];
for (int i = 0; i < num_students; ++i) {
students[i].id = i + 1;
students[i].score = rand() % 101; // 生成0-100之间的随机数
}
// 排序前的结果
std::cout << "原始成绩:\n";
for (Student student : students) {
std::cout << "学生 " << student.id << ": " << student.score << "\n";
}
// 使用选择排序法排序
selectionSort(students, num_students);
// 排序后的结果
std::cout << "\n排序后的成绩(从高分到低分):\n";
for (Student student : students) {
std::cout << "学生 " << student.id << ": " << student.score << "\n";
}
return 0;
}
```
阅读全文