LHL’PTA 实验8. 继承(二)
6-1 多重继承派生类构造函数 (10分)
根据所给的基类Student和Teacher,定义Graduate类
#include
#include
using namespace std;
class Teacher
{public:
Teacher(string nam,int a,string t)
{name=nam;
age=a;
title=t;}
void display()
{cout<<“name:”<<name<<endl;
cout<<“age”<<age<<endl;
cout<<“title:”<<title<<endl;
}
protected:
string name;
int age;
string title;
};
class Student
{public:
Student(string nam,char s,float sco)
{name1=nam;
sex=s;
score=sco;}
void display1()
{cout<<“name:”<<name1<<endl;
cout<<“sex:”<<sex<<endl;
cout<<“score:”<<score<<endl;
}
protected:
string name1;
char sex;
float score;
};
/* 请在这里填写答案 */
裁判测试程序样例:
int main( )
{Graduate grad1(“Wang-li”,24,‘f’,“assistant”,89.5,1234.5);
grad1.show( );
return 0;
}
输出样例:
name:Wang-li
age:24
sex:f
score:89.5
title:assistant
wages:1234.5
#include <iostream>
#include <string>
using namespace std;
class Teacher //声明Teacher(教师)类
{
public: //公用部分
Teacher(string nam,int a,string t) //构造函数
{
name=nam; age=a; title=t;}
void display() //输出教师有关数据
{
cout<<"name:"<<name<<endl;
cout<<"age"<<age<<endl;//LHL
cout<<"title:"<<title<<endl; }
protected: //保护部分
string name;
int age;
string title;}; //职称
class Student //声明类Student(学生)
{
public:
Student(string nam,char s,float sco)
{
name1=nam; sex=s; score=sco;} //构造函数
void display1() //输出学生有关数据
{
cout<<"name:"<<name1<<endl;
cout<<"sex:"<<sex<<endl;
cout<<"score:"<<score<<endl; }
protected: //保护部分
string name1;//LHL
char sex;
float score; }; //成绩
class Graduate:public Teacher,public Student //声明多重继承的派生类Graduate
{
public:
Graduate(string nam,int a,char s,string t,float sco,float w):
Teacher(nam,a,t),Student(nam,s,sco),wage(w) {
}
void show( ) //输出人员的有关数据
{
cout<<"name:"<<name<<endl;//LHL
cout<<"age:"<<age<<endl;
cout<<"sex:"<<sex<<endl;
cout<<"score:"<<score<<endl;
cout<<"title:"<<title<<endl;//LHL
cout<<"wages:"<<wage<<endl; }
private:
float wage; }; //工资
int main( )
{
Graduate grad1("Wang-li",24,'f',"assistant",89.5,1234.5);
grad1.show( );
return 0; }
返回
7-1 学生CPP成绩计算 (20分)
给出下面的人员基类框架:
class Person {
protected:
string name;
int age;
public:
Person();
Person (string p_name, int p_age);
void display () {cout<<name<<“:”<<age<<endl;}
};
建立一个派生类student,增加以下成员数据:
int ID;//学号
float cpp_score;//cpp上机成绩
float cpp_count;//cpp上机考勤
float cpp_grade;//cpp总评成绩
//总评成绩计算规则:cpp_grade = cpp_score * 0.9 + cpp_count * 2;
增加以下成员函数:
student类的无参构造函数
student类的参数化构造函数//注意cpp_grade为上机成绩和考勤的计算结果
void print()//输出当前student的信息
//其中cpp_grade输出保留一位小数
//输出格式为ID name cpp_grade
生成上述类并编写主函数,根据输入的学生基本信息,建立一个学生对象,计算其cpp总评成绩,并输出其学号、姓名、总评成绩。
输入格式: 测试输入包含若干测试用例,每个测试用例占一行(学生姓名 学号 年龄 cpp成绩 cpp考勤)。当读入0时输入结束,相应的结果不要输出。
输入样例:
Bob 10001 18 75.5 4
Mike 10005 17 95.0 5
0
输出样例:
10001 Bob 75.9
10005 Mike 95.5
#include<iostream>
#include<cstring>
using namespace std;
class Person {
protected:
char *name;
int age;
public:
Person(){
//默认构造函数
name=new char[20];
age=18;//LHL
strcpy(name,"Bob"