编写一个程序:输入几个学生的姓名、英语和计算机成绩,然后按照总分从高到低排序。要求定义一个student类,用友元函数实现排序。
时间: 2024-11-04 15:16:12 浏览: 12
编写程序,输入并保存5名学生的信息,计算出平均分,再按照成绩从高到低的顺序输出他们的信息。学生信息包括:学号、姓名、成绩。
为了编写这个程序,我们可以创建一个`Student`类,包含姓名(name)、英语(english_score)和计算机(computer_score)属性,并实现一个友元函数来进行排序。以下是简单的步骤:
首先,定义`Student`类:
```cpp
#include <iostream>
#include <string>
using namespace std;
class Student {
public:
string name;
int english_score;
int computer_score;
// 构造函数
Student(string n, int es, int cs) : name(n), english_score(es), computer_score(cs) {}
// 返回总分
int get_total_score() { return english_score + computer_score; }
// 友元函数声明,用于排序
friend bool compare_students(const Student& a, const Student& b);
};
// 定义比较函数,友元函数
bool compare_students(const Student& a, const Student& b) {
return a.get_total_score() > b.get_total_score();
}
```
接下来,在主函数中获取学生数据并排序:
```cpp
int main() {
vector<Student> students; // 存储学生对象的向量
// 输入学生信息
while (true) {
string name;
int eng_score, comp_score;
cout << "请输入学生姓名(输入'q'结束):";
getline(cin, name);
if (name == "q") break;
cin >> eng_score >> comp_score;
students.push_back(Student(name, eng_score, comp_score));
}
// 使用sort函数对students进行排序,利用compare_students作为比较器
sort(students.begin(), students.end(), compare_students);
// 输出按总分排序后的学生列表
for (const auto& student : students) {
cout << "姓名:" << student.name << ", 英语:" << student.english_score << ", 计算机:" << student.computer_score << ", 总分:" << student.get_total_score() << endl;
}
return 0;
}
```
当运行此程序时,用户可以输入多个学生的姓名和分数,程序将根据总分对他们进行降序排列。
阅读全文