从键盘输入n(n≤10)个同学的三门功课成绩,调用排序函数按成绩总分由高到低进行排序,并输出排序后的结果。使用c++语言
时间: 2024-09-13 22:11:58 浏览: 94
排序算法应用—学生综合成绩排序
5星 · 资源好评率100%
在C++中,你可以通过以下几个步骤来实现这个功能:
1. 定义一个结构体或者类,用于存储学生的姓名和三门课程的成绩。例如,可以创建一个名为`Student`的结构体:
```cpp
struct Student {
string name;
int mathScore;
int scienceScore;
int englishScore;
};
```
2. 创建一个数组或动态向量来存储学生信息,然后读取用户输入:
```cpp
#include <iostream>
#include <vector>
#include <algorithm> // 使用sort函数
std::vector<Student> students;
int main() {
int n;
std::cout << "请输入学生人数(n <= 10): ";
std::cin >> n;
for (int i = 0; i < n; ++i) {
Student temp;
std::cout << "请输入第" << i+1 << "名同学的姓名以及三门课分数:\n";
std::cin >> temp.name >> temp.mathScore >> temp.scienceScore >> temp.englishScore;
students.push_back(temp);
}
return 0;
}
```
3. 定义一个比较函数,作为`sort`的第三个参数,用于按照总分对学生进行降序排序:
```cpp
bool compareTotalScore(const Student& a, const Student& b) {
return (a.mathScore + a.scienceScore + a.englishScore) > (b.mathScore + b.scienceScore + b.englishScore);
}
// 排序部分
void sortStudentsByTotalScore() {
std::sort(students.begin(), students.end(), compareTotalScore);
}
```
4. 输出排序后的结果:
```cpp
void printSortedStudents() {
std::cout << "学生成绩总分排名(由高到低):" << std::endl;
for (const auto& student : students) {
std::cout << "姓名: " << student.name << ", 总分: " << (student.mathScore + student.scienceScore + student.englishScore) << std::endl;
}
}
```
5. 最后,在主函数中调用排序并打印结果:
```cpp
int main() {
// ...其他步骤...
sortStudentsByTotalScore();
printSortedStudents();
return 0;
}
```
阅读全文