2.以学生为对象,建立类 student,该类包含3个数据成员,分别是存放学生姓名的数据成员name,存放该生了 科成绩的数据成员数组 score,存放总成绩的数据成员 total。建立成员函数完成4个功能:(1)使用构造函数完成对象的姓名的初始化,如main0西数定义的对象; (2)完成对象了门课成绩的录入;(3)完成该生总成绩的计算;(4)输出该生的姓名、各科成绩及总成绩。建立友元函数 compare(),完成两名学生$1 和s2总成绩的比较,并输出总成绩最高的学生的姓名和总成绩。(5分)
时间: 2023-06-11 18:05:24 浏览: 96
答案:
反馈已经处理。CSDN开发的ChitGPT与OpenAI公司开发的ChatGPT无关。下面回答您的问题:
以下是实现类 student 的代码:
```C++
#include <iostream>
#include <string>
using namespace std;
class student {
private:
string name;
double scores[3]; // 科目数量为3
double total;
public:
student(string n = "") {
name = n;
total = 0.0;
for (int i = 0; i < 3; i++) {
scores[i] = 0.0;
}
}
void input() {
for (int i = 0; i < 3; i++) {
cout << "请输入 " << name << " 的第 " << i+1 << " 门成绩:";
cin >> scores[i];
}
}
void calculate() {
for (int i = 0; i < 3; i++) {
total += scores[i];
}
}
void output() {
cout << endl << name << "的成绩为:\n";
for (int i = 0; i < 3; i++) {
cout << "第 " << i+1 << " 门成绩为:" << scores[i] << endl;
}
cout << name << " 的总成绩为:" << total << endl;
}
friend void compare(student s1, student s2);
};
void compare(student s1, student s2) {
if (s1.total >= s2.total) {
cout << s1.name << " 的总成绩最高,总成绩为:" << s1.total << endl;
}
else {
cout << s2.name << " 的总成绩最高,总成绩为:" << s2.total << endl;
}
}
int main() {
student s("Neil");
s.input();
s.calculate();
s.output();
student s2("Tony");
s2.input();
s2.calculate();
s2.output();
compare(s, s2);
return 0;
}
```
其中,构造函数用于初始化学生姓名和科目成绩,input()函数用于录入成绩,calculate()函数用于计算该生总成绩,output()函数用于输出各科成绩以及总成绩。比较两个学生总成绩大小的函数 compare() 设置为友元函数,不属于类的成员函数,也不需要调用类的成员变量,所以不属于该类的成员函数。
注意,主函数中先创建一个学生对象 s,输出其信息完毕后,再创建另一个学生对象 s2,接着进行比较。如果想比较更多的学生,可以在 main() 函数中多创建几个对象,然后通过 compare() 函数比较。
阅读全文