编写一个代码:每一个学生有学号、姓名、一门课的成绩等基本信息。编写一个程序,用友元函数实现比较学生成绩的高低,并输出所有学生中最高分和最低分的姓名。
时间: 2024-02-09 19:13:01 浏览: 20
以下是一个C++的实现,使用了友元函数和类:
```cpp
#include <iostream>
#include <string>
using namespace std;
class Student {
private:
int id;
string name;
double score;
public:
Student(int i, string n, double s) {
id = i;
name = n;
score = s;
}
friend bool compare_score(const Student& s1, const Student& s2);
string get_name() const {
return name;
}
};
bool compare_score(const Student& s1, const Student& s2) {
return s1.score > s2.score;
}
int main() {
Student s1(1, "Alice", 90.5);
Student s2(2, "Bob", 85.0);
Student s3(3, "Charlie", 95.0);
Student s4(4, "David", 80.0);
Student students[] = {s1, s2, s3, s4};
int n = sizeof(students) / sizeof(Student);
sort(students, students + n, compare_score);
cout << "Highest score: " << students[0].get_name() << endl;
cout << "Lowest score: " << students[n-1].get_name() << endl;
return 0;
}
```
在这个程序中,我们定义了一个`Student`类,其中包含了学号、姓名和成绩等基本信息,并且也定义了一个友元函数`compare_score`,用于比较两个`Student`对象的成绩高低。在`main`函数中,我们创建了四个`Student`对象,并将它们放入一个数组中。然后,我们使用`sort`函数对数组中的`Student`对象进行排序,排序的规则是按照成绩从高到低排序。最后,我们输出数组中第一个和最后一个元素的姓名,即为最高分和最低分的姓名。
阅读全文