编写一个C++程序,随机产生20个学生的计算机课程的成绩(0~100),使用选择排序法,不使用排序函数,按照从大到小的顺序排序,分别显示排序前和排序后的结果。
时间: 2024-10-18 18:10:08 浏览: 35
在C++中,你可以通过以下几个步骤编写一个简单的程序来完成这个任务:
首先,你需要包含必要的头文件并创建一个结构体来存储学生的信息,包括姓名和成绩。然后,使用`rand()`函数生成随机数,并利用选择排序算法进行降序排列。
```cpp
#include <iostream>
#include <cstdlib> // 包含random库
#include <ctime> // 初始化随机数种子
// 定义学生信息结构体
struct Student {
std::string name;
int score;
};
// 随机生成成绩的辅助函数
int randomScore() {
return rand() % 101; // 生成0到100之间的整数
}
// 选择排序函数
void selectionSort(Student scores[], int n) {
for (int i = 0; i < n - 1; ++i) {
int maxIndex = i;
for (int j = i + 1; j < n; ++j) {
if (scores[j].score > scores[maxIndex].score) {
maxIndex = j;
}
}
if (maxIndex != i) { // 如果找到更大值
std::swap(scores[i], scores[maxIndex]);
}
}
}
int main() {
// 设置随机数种子(为了保证每次运行程序得到的结果一致)
srand(time(0));
const int numStudents = 20;
Student scores[numStudents];
// 生成随机成绩并填充学生数组
for (int i = 0; i < numStudents; ++i) {
scores[i].name = "Student_" + std::to_string(i);
scores[i].score = randomScore();
}
std::cout << "原始成绩(按降序):" << std::endl;
for (const auto& student : scores) {
std::cout << student.name << ": " << student.score << std::endl;
}
// 对成绩进行选择排序
selectionSort(scores, numStudents);
std::cout << "\n排序后的成绩(降序):" << std::endl;
for (const auto& student : scores) {
std::cout << student.name << ": " << student.score << std::endl;
}
return 0;
}
```
当你运行此程序时,它将打印出原始的、未排序的学生分数列表,以及经过选择排序后的降序分数列表。
阅读全文