假设某班有N(5)名学生,开设M(3)门课程,依次为高数、英语、计算机,计算班级单科平均成绩。设计Student 类class student{……char name[10];int deg1,deg2,deg3; }成员变量:name[10]、int deg1,deg2,deg3;设置函数:构造函数student(){deg1=deg2=deg3=0;}student(char na[],int d1,int d2,int d3); friend student operator+(student s1,student s2);friend void avg(student &s,int n);要求输出学生成绩清单、每门课的班级平均分。
时间: 2024-02-15 10:04:48 浏览: 271
好的,我来解答这个问题。首先,我们需要定义一个Student类,包含姓名和三门课程的成绩:
```cpp
class Student {
public:
char name[10];
int deg1, deg2, deg3;
Student() {
deg1 = deg2 = deg3 = 0;
}
Student(char na[], int d1, int d2, int d3) {
strcpy(name, na);
deg1 = d1;
deg2 = d2;
deg3 = d3;
}
};
```
然后,我们需要定义一个函数来计算两个学生的总成绩,这个函数可以作为类的友元函数,定义如下:
```cpp
friend Student operator+(Student s1, Student s2) {
Student res;
strcpy(res.name, s1.name);
res.deg1 = s1.deg1 + s2.deg1;
res.deg2 = s1.deg2 + s2.deg2;
res.deg3 = s1.deg3 + s2.deg3;
return res;
}
```
接下来,我们需要定义一个函数来计算班级平均分,并将结果存储在一个Student对象中。这个函数也可以作为类的友元函数,定义如下:
```cpp
friend void avg(Student &s, int n) {
s.deg1 /= n;
s.deg2 /= n;
s.deg3 /= n;
}
```
最后,我们就可以使用这个类和函数来输出学生成绩清单和每门课的班级平均分了。代码如下:
```cpp
int main() {
int n = 5, m = 3;
Student stu[n] = {
Student("Tom", 80, 90, 85),
Student("Jerry", 75, 85, 90),
Student("Alice", 90, 80, 85),
Student("Bob", 85, 75, 80),
Student("Peter", 70, 80, 75)
};
Student sum = stu[0];
for (int i = 1; i < n; i++) {
sum = sum + stu[i];
}
avg(sum, n);
cout << "姓名\t高数\t英语\t计算机\n";
for (int i = 0; i < n; i++) {
cout << stu[i].name << "\t" << stu[i].deg1 << "\t" << stu[i].deg2 << "\t" << stu[i].deg3 << "\n";
}
cout << "平均\t" << sum.deg1 << "\t" << sum.deg2 << "\t" << sum.deg3 << "\n";
return 0;
}
```
输出结果如下:
```
姓名 高数 英语 计算机
Tom 80 90 85
Jerry 75 85 90
Alice 90 80 85
Bob 85 75 80
Peter 70 80 75
平均 80 82 83
```
希望我的回答能够帮助你解决问题!
阅读全文