MOOC———c++11周————继承
来源:互联网 发布:网络上的uv是什么意思 编辑:程序博客网 时间:2024/06/09 23:55
1。公有继承中派生类Student对基类Person成员的访问(20分)
题目内容:
已知基类Person的定义如下:
class Person
{ char Name[20];
char Sex;
int
Age;
public:
void Register(char *name, int age, char sex) ;
void
ShowMe();
};
请通过继承的方法建立一个派生类Student,其中
1.新增的数据成员有:
int
Number;
char ClassName[10];
2.新增的成员函数有:
void RegisterStu(char
*classname, int number, char *name, int age, char sex)
//对数据成员赋值,并使用基类的Register
void
ShowStu() //显示数据成员信息,并使用基类的ShowMe
在主程序中建立一个派生类对象,利用已有的成员函数分别显示派生类对象和基类对象的数据成员。
输入格式:
学生的班级、学号、姓名、年龄和性别
输出格式:
先输出派生类对象的数据成员,依次为 学号、班级、姓名、年龄和性别
再输出基类的数据成员,依次为姓名、年龄和性别
输入样例:
计算机51 85071011 张弓长 18 m
输出样例:
85071011 计算机51 张弓长 18 m
张弓长 18 m
#include<iostream>#include<string.h>using namespace std;class Person{ char Name[20]; char Sex; int Age;public: void Register(char *name, int age, char sex) ; void ShowMe();};void Person::Register(char *name, int age, char sex){ strcpy(Name,name); Sex=sex; Age=age;}void Person::ShowMe(){ cout<<Name<<" "<<Age<<" "<<Sex<<endl;}class Student:public Person {private : int Number; char ClassName[10];public : void RegisterStu(char *classname, int number, char *name, int age, char sex) ; void ShowStu();};void Student::RegisterStu(char *classname, int number, char *name, int age, char sex){ Register(name,age,sex); Number=number; strcpy(ClassName,classname);}void Student::ShowStu(){cout<<Number<<" "<<ClassName<<" "; ShowMe();}int main(){ char classname[20]; int number; char name[20]; int age; char sex; cin>>classname>>number>>name>>age>>sex; Student s; s.RegisterStu(classname,number,name,age,sex); s.ShowStu(); s.ShowMe(); return 0;}
2.公有继承中派生类Student对基类Person成员的访问(20分)
题目内容:
已知基类Person的定义如下:
class Person
{
protected:
char Name[10];
char
Sex;
int Age;
public:
void Register(char *name,int age,char
sex);
void
ShowMe();
};
请通过继承的方法建立两个派生类,其中
派生类Teacher:
1.新增的数据成员有:
char
Dept[20];
int
Salary;
2.新增的成员函数有:
构造函数,并使用基类的Register
3.重写的成员函数有:
void
ShowMe() //显示数据成员信息,并使用基类的ShowMe
派生类Student:
1.新增的数据成员有:
char
ID[12];
char Class[12];
2.新增的成员函数有:
Student(char *name,int age,char
sex, char *id,char *classid);
3.重写的成员函数有:
void
ShowMe() //显示数据成员信息,并使用基类的ShowMe
在主程序中分别建立两个派生类对象,利用已有的成员函数分别显示两个派生类对象的数据成员。
输入格式:
教师对象的初始化参数
学生对象的初始化参数
输出格式:
请参考输出样例严格按照格式输出教师对象和学生对象的详细信息
输入样例:
章立早 38 m 电信学院 2300
李木子 22 f 02035003 能动01
输出样例:
姓名 章立早
性别 男
年龄 38
工作单位 电信学院
月薪 2300
学号 02035003
姓名 李木子
性别 女
年龄 22
班级 能动01
时间限制:500ms内存限制:32000kb
#include<iostream>#include<string.h>using namespace std;class Person{public: char Name[10]; char Sex; int Age;public: void Register(char *name,int age,char sex); void ShowMe();};void Person::Register(char *name,int age,char sex){ strcpy(Name,name); Age=age; Sex=sex;}void Person ::ShowMe(){ cout<<"姓名 "<<Name<<endl; if (Sex=='f') cout<<"性别 女"<<endl; else cout<<"性别 男"<<endl; cout<<"年龄 "<<Age<<endl;}class Teacher:public Person{ char Dept[20]; int Salary;public: Teacher(char *name,int age,char sex,char *dept,int salary){ strcpy(Dept,dept); Salary=salary; Person::Register(name,age,sex); } void ShowMe() { Person::ShowMe(); cout<<"工作单位 "<<Dept<<endl; cout<<"月薪 "<<Salary<<endl; }} ;class Student:public Person{ char ID[12]; char Class[12];public : Student(char *name,int age,char sex, char *id,char *classid) { Person::Register(name,age,sex); strcpy(ID,id); strcpy(Class,classid); } void ShowMe() { cout<<"学号 "<<ID<<endl; Person::ShowMe(); cout<<"班级 "<<Class<<endl; }};int main(){ char name1[20],name2[20]; int age1,age2; char sex1,sex2; char xueyuan[20],id[20],Class[20]; int slary; cin>>name1>>age1>>sex1>>xueyuan>>slary; cin>>name2>>age2>>sex2>>id>>Class; Teacher t(name1,age1,sex1,xueyuan,slary); Student s(name2,age2,sex2,id,Class); t.ShowMe(); s.ShowMe(); return 0;}
**3.派生类Student的构造函数和析构函数(20分)
题目内容:**
已知基类Person的定义如下:
class Person
{ char Name[10]; //姓名
int Age; //年龄
public:
Person(char* name,int age)
{ strcpy(Name, name);
Age = age;
cout<<”constructor of person “<
#include<iostream>#include<string.h>using namespace std;class Person{ char Name[10]; //姓名 int Age; //年龄public: Person(char* name,int age) { strcpy(Name, name); Age = age; cout<<"constructor of person "<<Name<<endl; } ~Person() { cout<<"deconstructor of person "<<Name<<endl; }};class Student :public Person{ char ClassName[10]; //班级 Person Monitor; //班长public : Student(char *name, int age, char *classname, char *name1, int age1) :Person(name,age),Monitor(name1,age1) { strcpy(ClassName,classname); cout<<"constructor of Student"<<endl; } ~Student() { cout<<"deconstructor of Student"<<endl; }};int main(){ char name1[20],name2[20]; int age1,age2; char classname[20]; cin>>name1>>age1>>classname>>name2>>age2; Student s(name1,age1,classname,name2,age2); return 0;}
4.从Point类继承的Circle类(20分)
题目内容:
已知基类Point的定义如下:
class Point
{
int x, y; //点的x和y坐标
public: Point( int = 0, int = 0 ); // 构造函数
void SetPoint( int, int ); // 设置坐标
int GetX() { return x; } // 取x坐标
int GetY() { return y; } // 取y坐标
void Print(); //输出点的坐标 };
Point( int a, int b ) { SetPoint( a, b ); }
void SetPoint( int a, int b ) { x = a; y = b; }
void Print() { cout << “[” << x << “,” << y << “]”;
}
请通过继承的方法建立一个派生类Circle,其中
1.新增的数据成员有: double radius;
2.新增的成员函数有:
Circle(int x = 0, int y = 0 , double r = 0.0); //对数据成员赋值,并使用SetRadius和基类的Point
void SetRadius( double ); //设置半径
double GetRadius(); //取半径
double Area(); //计算面积
void Print(); //输出圆心坐标和半径,并使用基类的Print
在主程序中分别建立基类对象和派生类对象,使用用户输入的初值分别对基类对象和派生类对象的数据成员赋值后,利用已有的成员函数分别显示基类对象和派生类对象的数据成员信息。
圆周率取3.14。
输入格式:
第一行是Point类的初始化信息,第二行是Circle类的初始化信息
输出格式:
请参考输出样例,严格按照样例输出,建议直接将部分文字复制粘贴进程序代码中
输入样例:
30 50
120 80 10
输出样例:
Point p [30,50]
Circle c Center=[120,80]
Radius=10
The centre of circle c [120,80]
The area of circle c 314
时间限制:500ms内存限制:32000kb
#include<iostream>using namespace std;class Point{ int x, y; //点的x和y坐标public: Point( int = 0, int = 0 ); // 构造函数 void SetPoint( int, int ); // 设置坐标 int GetX() { return x; } // 取x坐标 int GetY() { return y; } // 取y坐标 void Print(); //输出点的坐标};Point::Point( int a, int b ){ SetPoint( a, b );}void Point::SetPoint( int a, int b ){ x = a; y = b;}void Point::Print(){ cout << "[" << x << "," << y << "]";}class Circle:public Point{ double radius;public: Circle(int x = 0, int y = 0 , double r = 0.0); //对数据成员赋值,并使用SetRadius和基类的Point void SetRadius( double ); //设置半径 double GetRadius(); //取半径 double Area(); //计算面积 void Print(); //输出圆心坐标和半径,并使用基类的Print};Circle::Circle(int x , int y , double r ){ Point::SetPoint(x,y); SetRadius(r);}void Circle::SetRadius(double R){ radius=R;}double Circle::GetRadius(){ return radius;}double Circle::Area(){ return 3.14*GetRadius()*GetRadius();}void Circle::Print(){ Point::Print();}int main(){ int x,y; int a,b; double c; cin>>x>>y; cin>>a>>b>>c; Point p1(x,y); Circle c1(a,b,c); cout<<"Point p ";p1.Print();cout<<endl; cout<<"Circle c Center="; c1.Print();cout<<endl; cout<<"Radius="<<c<<endl; cout<<"The centre of circle c "; c1.Print();cout<<endl; cout<<"The area of circle c "<<c1.Area()<<endl; return 0;}
5.题目内容:
已知基类Person定义如下:
class Person
{
char Name[10];
char Sex[10];
int Age;
public:
void Register(char *name,int age,char *sex);
void ShowMe();
};
请通过继承的方法建立两个派生类,其中
派生类Teacher:
1.新增的数据成员有:
char Dept[20];
int Salary;
2.新增的成员函数有:
Teacher(char *name,int age,char *sex,char *dept,int salary);
void Show() //显示新增数据成员
派生类Student:
1.新增的数据成员有:
char ID[12];
char Class[12];
2.新增的成员函数有:
Student(char *name,int age,char *sex,char *ID,char *Class);
void Show()//显示新增数据成员
请通过继承的方法从Teacher和Student中建立派生类Graduate,其中
1.新增的成员函数有:
Graduate(char *name,int age,char *sex,char *dept,int salary,char *id,char *classid);
2.重写的成员函数有:
void ShowMe()//显示数据成员,要求调用基类的Show和ShowMe
在主程序中建立一个派生类Graduate的对象,利用成员函数显示对象的数据成员。
输入格式:*
Graduate对象的初始化信息
输出格式:
按照输出样例格式输出Graduate对象的信息
输入样例:
李木子 22 f 电信学院 2300 04035003 硕401
输出样例:
班级 硕401
学号 04035003
姓名 李木子
性别 女
年龄 22
工作单位 电信学院
月薪 2300
时间限制:500ms内存限制:32000kb
#include<iostream>#include<string.h>using namespace std;class Person{ char Name[10]; char Sex[10]; int Age;public: void Register(char *name,int age,char *sex); void ShowMe();};void Person::Register(char *name,int age,char *sex){ strcpy(Name,name); strcpy(Sex,sex); Age=age;}void Person::ShowMe(){ cout<<"姓名 "<<Name<<endl; if (strcmp(Sex,"f")==0) cout<<"性别 女"<<endl; else cout<<"性别 男"<<endl; cout<<"年龄 "<<Age<<endl;}//——————————————————————————————————————————class Teacher:public Person{ char Dept[20]; int Salary;public: Teacher(char *name,int age,char *sex,char *dept,int salary) { Person::Register(name,age,sex); strcpy(Dept,dept); Salary=salary; } void Show() { cout<<"工作单位 "<<Dept<<endl; cout<<"月薪 "<<Salary<<endl; }};//————————————————————————————————class Student :public Person{ char ID[12]; char Class[12];public : Student(char *name,int age,char *sex,char *id,char *Class1) { Person::Register(name,age,sex); strcpy(ID,id); strcpy(Class,Class1); } void Show() { cout<<"班级 "<<Class<<endl; cout<<"学号 "<<ID<<endl; Person::ShowMe(); }};//______________________________________class Graduate:public Teacher,public Student{public : Graduate(char *name,int age,char *sex,char *dept,int salary,char *id,char *classid) :Teacher(name,age,sex,dept,salary),Student(name,age,sex,id,classid){} void ShowMe() { Student::Show(); Teacher::Show(); }};int main(){ char name[20]; int age; char sex[20]; char dept[20]; int salary; char id[20]; char classname[20]; cin>>name>>age>>sex>>dept>>salary>>id>>classname; Graduate g(name,age,sex,dept,salary,id,classname); g.ShowMe(); return 0;}
- MOOC——C语言2
- MOOC——C语言4
- MOOC——C语言5
- MOOC——C语言6
- MOOC——C语言7
- MOOC——C语言8
- MOOC——C语言9
- MOOC——C语言10:字符串
- MOOC——C语言13:文件
- MOOC———c++11周————继承
- C++第11周mooc在线测评—第11周 类的继承
- 程序设计实习MOOC / 继承和派生——编程作业 第五周程序填空题1
- MOOC——C语言11:结构类型:枚举,结构,联合
- 中国大学MOOC-翁恺-C语言程序习题——第二周
- C++——继承
- C#——继承
- 【MOOC】Java语言程序设计进阶—第0周
- MOOC——C语言12:程序结构:全局变量、预编译器和宏、大程序结构
- Java设计模式——单例模式
- C#使用反射将DataTable转换List<T>
- 贪心(1)--hdu3979(贪心进阶)
- 20个常用正则,让你少写1000行代码
- IntelliJ IDEA2016 + tomcat 设置热部署
- MOOC———c++11周————继承
- 360云盘岛国资源共享群
- 不安装工具快速破解网吧不能下载、注册表锁定、窗口不允许等
- 01500105_MLDN-魔乐科技-李兴华【Java核心技术】_JDBC连接Oracle数据库
- 一步搞定studio的ndk
- Insert Delete GetRandom O(1) - Duplicates allowed in JAVA
- 自定义jquery插件
- HTML5新增的9种常用的页面标签
- linux命令缩写含义