用c++写一个学生类包含学号和成绩,同时设计一个计算平均成绩的友元函数,main函数里要包含输入输出
时间: 2023-06-10 17:05:10 浏览: 109
设计一个学生类Student(学生学号、姓名、数学、英语、计算机成绩;)
5星 · 资源好评率100%
Sure, 我可以回答你的问题。这个学生类可以这么写:
```cpp
class Student {
public:
Student(int id, double grade) : id_(id), grade_(grade) {}
friend double CalcAvgGrade(const std::vector<Student>& students);
friend std::ostream& operator<<(std::ostream& os, const Student& s) {
os << "Student " << s.id_ << " grade: " << s.grade_;
return os;
}
private:
int id_;
double grade_;
};
double CalcAvgGrade(const std::vector<Student>& students) {
double sum = 0;
for (const auto& s : students) {
sum += s.grade_;
}
return sum / students.size();
}
```
在这个学生类里,我们定义了一个构造函数用来初始化学生的学号和成绩;同时定义了一个友元函数 `CalcAvgGrade` 用来计算学生的平均成绩。友元函数是在类外定义的函数,在这个例子里,我们将 `CalcAvgGrade` 声明为了友元函数,这样它就可以访问 `Student` 类的私有成员变量了。注意这里计算平均成绩的函数接受的参数是一个学生类对象的vector,这样我们就可以同时处理多个学生的成绩了。
然后我们在 main 函数里输入一些学生信息,然后调用友元函数 `CalcAvgGrade` 来计算平均成绩,再将结果输出到控制台上。
```cpp
int main() {
std::vector<Student> students {
{ 1, 80 },
{ 2, 90 },
{ 3, 85 },
};
double avg = CalcAvgGrade(students);
std::cout << "Average grade is: " << avg << std::endl;
return 0;
}
```
这里我们先构造了一个 `vector` 存放了一些学生信息,接着调用了 `CalcAvgGrade` 函数计算平均成绩,最后将结果输出到控制台上。运行这个程序的输出结果应该是:
```
Average grade is: 85
```
阅读全文