2.每一个学生有学号、姓名、一门课的成绩等基本信息。编写一个程序,用友元函数实现比较学生成绩的高低,并输出所有学生中最高分和最低分的姓名。用c++编写程序
时间: 2024-02-12 07:04:46 浏览: 144
好的,这是一个比较经典的程序,我会给你提供一个基本的代码框架,你可以根据自己的理解和需要进行修改和完善。
```
#include <iostream>
#include <string>
using namespace std;
// 学生类的定义
class Student {
friend void compareScore(Student[], int);
private:
string name; // 姓名
int num; // 学号
int score; // 成绩
public:
Student(string n, int no, int s) : name(n), num(no), score(s) {}
};
// 比较学生成绩的高低并输出最高分和最低分的姓名
void compareScore(Student stu[], int n) {
int maxScore = -1, minScore = 101;
string maxName, minName;
for (int i = 0; i < n; ++i) {
if (stu[i].score > maxScore) {
maxScore = stu[i].score;
maxName = stu[i].name;
}
if (stu[i].score < minScore) {
minScore = stu[i].score;
minName = stu[i].name;
}
}
cout << "最高分的学生是 " << maxName << ",分数为 " << maxScore << endl;
cout << "最低分的学生是 " << minName << ",分数为 " << minScore << endl;
}
int main() {
// 输入学生信息
int n;
cout << "请输入学生人数:";
cin >> n;
Student stu[n];
for (int i = 0; i < n; ++i) {
string name;
int num, score;
cout << "请输入第" << i+1 << "个学生的姓名、学号和成绩:";
cin >> name >> num >> score;
stu[i] = Student(name, num, score);
}
// 比较成绩并输出最高分和最低分的姓名
compareScore(stu, n);
return 0;
}
```
在这个程序中,我们首先定义了一个 `Student` 类,其中包含了学生的姓名、学号和成绩等基本信息。然后我们定义了一个 `compareScore` 的友元函数,用于比较所有学生的成绩并输出最高分和最低分的姓名。最后在 `main` 函数中,我们输入学生信息并调用 `compareScore` 函数来完成程序的功能。
阅读全文