某班有30人,现要评定奖学金,条件是成绩为前10名,请编写程序统计成绩位于前10名的学生。 用C语言编写一个完整的排序函数,完成30人成绩的降序排列。
时间: 2024-12-22 09:15:03 浏览: 5
在C++中,你可以使用`std::sort`函数结合自定义比较函数来实现这个需求。这里是一个简单的示例,假设我们有一个名为`students`的`Student`类,它有一个表示成绩的成员变量`score`。首先,我们需要定义学生类并创建一个包含30个学生的向量。然后,我们可以按照成绩降序排列这些学生:
```cpp
#include <iostream>
#include <vector>
#include <algorithm> // 引入算法库
// 假设有一个Student类
class Student {
public:
int score;
// 构造函数和其他成员函数...
};
// 自定义比较函数,用于降序排列
bool compare(const Student& a, const Student& b) {
return a.score > b.score;
}
int main() {
const int numStudents = 30;
std::vector<Student> students(numStudents);
// 初始化学生分数... (此处省略)
for (int i = 0; i < numStudents; i++) {
students[i].score = ...;
}
// 使用std::sort对学生成绩进行降序排序
std::sort(students.begin(), students.end(), compare);
// 打印前10名学生的成绩(假设我们只关心前10名)
int topTenIndex = std::min(10, static_cast<int>(students.size()));
for (int i = 0; i < topTenIndex; i++) {
std::cout << "Top 10 student " << i+1 << ": Score - " << students[i].score << std::endl;
}
return 0;
}
```
在这个例子中,`compare`函数告诉`std::sort`我们应该按照`score`字段降序排列。`std::sort`会直接修改`students`向量,因此无需额外的存储空间。
阅读全文