题目描述
定义Person类具有姓名、年龄等属性,具有输出基本信息的display函数。
选修《面向对象程序设计》课程的学生是在Person类的基础上,派生出的子类:学生类。子类继承父类成员,新增其他成员、改写display函数。
1.学生类具有平时成绩、考试成绩和总评成绩三个属性,
2.计算总评成绩的函数,总评成绩=平时成绩*40%+考试成绩*60%。
3.新的display函数
教授《面向对象程序设计》课程的老师是在Person类的基础上,派生出的子类:教师类。子类继承父类成员,新增其他成员、改写display函数。
1.增加选课学生数组、选课人数、班级平均分三个属性
2.在选课学生数组中增加一个学生的函数
3.计算班级学生平均分的函数
4.新的display函数
定义上述类并编写主函数,首先建立一个教师类对象,随后将n个学生类对象加入教师类对象的选课学生数组中。计算该教师教授班级学生的平均成绩,并输出。
输入
教师类对象基本信息
选课人数n
随后每行输入学生类对象相关信息
输出
教师类对象信息
所有选课学生信息
IO模式
本题IO模式为标准输入/输出(Standard IO),你需要从标准输入流中读入数据,并将答案输出至标准输出流中。
样例
输入:
Cindy 18
2
Sandy 8 90 80
David 9 60 70
输出:
Cindy 18 2 75.00
Sandy 8 84.00
David 9 66.00
这道题坑人的地方在于输入样例给的没有浮点型数,但后台样例是有的
建立类的动态数组之前,被建立的类要先定义好无参构造函数,否则疯狂报错xd
AC代码:
#include <iostream>
#include <iomanip>
#include <cstring>
using namespace std;
class Person {
protected:
char name[50];
int age;
public:
Person() {}
Person(char *p, int a) {
strcpy(name, p);
age = a;
}
void display() {
cout << name << " " << age << endl;
}
};
class student: public Person {
protected:
float test, exam;
float final;
public:
student() {
}
student(char *p, int age, double t, double e): Person(p, age) {
test = t;
exam = e;
}
double gf() {
final = test * 0.4 + exam * 0.6;
return final;
}
void display() {
cout << name << " " << age << fixed << setprecision(2) << " " << final << endl;
}
};
class teacher: public Person {
public:
teacher() {
}
teacher(char *q, int age) : Person(q, age) {
}
void addstudent(int nn) {
n = nn;
s = new student[n];
for (int i = 0; i < n; i++) {
char name[50];
int age;
double t, e;
cin >> name >> age >> t >> e;
s[i] = student(name, age, t, e);
}
}
void average() {
aver = 0;
for (int i = 0; i < n; i++) {
aver = aver + s[i].gf();
}
aver = aver / n;
}
void display() {
cout << name << " " << age << " " << n << " " << fixed << setprecision(2) << aver << endl;
for (int i = 0; i < n; i++) {
s[i].display();
}
}
protected:
student *s;
int n;
float aver;
};
int main() {
char name[50];
int age;
double n, t, e;
cin >> name >> age;
cin >> n;
teacher obj(name, age);
obj.addstudent(n);
obj.average();
obj.display();
}
碎碎念:如果你也是来自深圳某所大专的学生,做不出来一定要看看后面的OJ是多么简单,不要恋战www