某班有30人,现要评定奖学金,条件是成绩为前10名,请编写程序统计成绩位于前10名的学生。 (1)编写排序函数,完成30人成绩的降序排列。
时间: 2024-12-21 15:23:05 浏览: 5
首先,我们需要创建一个`Student`类,就像你在引用[2]中描述的那样,以便存储学生信息。然后,我们可以使用C++中的`std::vector`来存储30名学生的数据,并实现一个排序函数来找出前10名成绩最高的学生。以下是一个简单的示例:
```cpp
#include <iostream>
#include <vector>
#include <algorithm>
// 定义学生结构体
struct Student {
std::string name;
std::string student_id;
float score;
};
// 排序函数,按照分数降序
bool compare(const Student& a, const Student& b) {
return a.score > b.score;
}
int main() {
// 假设我们已经有了30名学生的数据
std::vector<Student> students = {/* 30名学生的数据 */ ...};
// 使用sort函数对成绩进行降序排列
std::sort(students.begin(), students.end(), compare);
// 记录前10名学生的索引
std::vector<int> top_10_indices(10);
for (int i = 0; i < 10 && i < students.size(); ++i) {
top_10_indices[i] = i;
}
// 打印前10名学生的信息
for (int index : top_10_indices) {
std::cout << "Rank: " << index + 1 << ", Name: " << students[index].name
<< ", Score: " << students[index].score << std::endl;
}
return 0;
}
```
这段代码假设你已经有一个包含30名学生及其成绩的`students`向量。`compare`函数用于比较两个学生的分数,`std::sort`则根据这个函数对整个向量进行排序。最后,我们只打印排名前10的学生信息。
阅读全文