[C++]第九章 继承与派生(作业)
看到了就点个赞赞嘛~ ヾ(≧▽≦*)o~
第九周作业
(
*初学C++,想要把每周老师布置的实验题和自己写的程序记录下来,方便期末整理复习,请多多指教!
老师要求用的版本比较老,是Microsoft Visual C++ 2010 Express。
*)
一、实验内容1
声明二维坐标类作为基类派生圆类,把派生类圆作为基类,派生圆柱体类。
其中
- 基类二维坐标类有成员数据:x、y坐标值;有成员函数:构造函数实现对基类成员数据的初始化、输出的成员函数,要求输出坐标位置。
- 派生类圆类有新增成员数据:半径 ( R);有成员函数:构造函数实现对成员数据的初始化、计算圆面积的成员函数、输出的成员函数,要求输出圆半径
( R )。 - 派生圆柱体类新增成员数据有高(H);新增成员函数有构造函数、计算圆柱体体积的函数、输出所有成员的函数。
请完成程序代码的编写、调试,并得到正确结果。
#include<iostream>
using namespace std;
# define Pi 3.1415
class Point
{
float x,y;
public:
Point(float a,float b)
{x=a,y=b;}
void Print()
{cout<<"坐标位置为:"<<"("<<x<<','<<y<<")"<<endl;}
};
class Circle:public Point
{
float R;
public:
Circle(float a,float b,float c)
:Point(a,b)
{R=c;}
float S()
{return Pi*R*R; }
void Show()
{cout<<"圆的半径为:"<<R<<endl;}
};
class Column:public Circle
{
float H;
public:
Column(float a,float b,float c,float d)
:Circle(a,b,c)
{H=d;}
float V()
{return S()*H;}
void Display()
{
Print();
Show();
cout<<"圆柱体的高为:"<<H<<endl;
}
};
void main()
{
Column c(8,9,1,10);
c.Display();
cout<<"圆柱体的体积为:"<<c.V()<<endl;
getchar();
}
二、实验内容2
声明一个学生类,有成员数据:学号、姓名、性别、年龄,要求有如下成员函数:构造函数、输出所有成员的函数。
把学生类作为基类,通过公有继承,分别派生博士生类、硕士生类、本科生类,其中
- 博士生类新增成员数据有 科研工作量 和 论文数 ;
- 硕士生类新增成员数据有 考核成绩 和 是否参加科研项目 (1—表示参加,0一表示未参加);
- 本科生类新增成员数据有获得 课内学分数 和 课外学分数 。
每个派生类需新增成员函数有构造函数、输出所有成员的函数。
请参考本实验的案例,完成程序代码的编写、调试,并得到正确结果。
思考
如果把学生类的输出成员函数取消,在派生类中,输出所有成员的函数应该如何实现?
#include<iostream>
#include<string.h>
using namespace std;
class Stu
{
int No,Age;
char Name[10],Sex[4];
public:
Stu(int no,char *name,char *sex,int age)
{
No=no,Age=age;
strcpy(Name,name);
strcpy(Sex,sex);
}
void Print()
{cout<<"学号:"<<No<<'\t'<<"姓名:"<<Name<<"\t性别:"<<Sex<<"\t年龄:"<<Age<<'\t';}
};
class Bo:public Stu
{
int Ky,Lw;
public:
Bo(int no,char *name,char *sex,int age,int ky,int lw)
:Stu(no,name,sex,age)
{Ky=ky,Lw=lw;}
void Print1()
{
Print();
cout<<"科研工作量:"<<Ky<<"\t论文数:"<<Lw<<endl;
}
};
class Shuo:Stu
{
float Grade;
bool Proj;
public:
Shuo(int no,char *name,char *sex,int age,float x,bool y)
:Stu(no,name,sex,age)
{Grade=x,Proj=y;}
void Print2()
{
Print();
cout<<"考核成绩:"<<Grade<<"\t是否参加科研项目(1-是,0-否):"<<Proj<<endl;;
}
};
class Ben:public Stu
{
float Knxf,Kwxf;
public:
Ben(int no,char *name,char *sex,int age,float a,float b)
:Stu(no,name,sex,age)
{Knxf=a,Kwxf=b;}
void Print3()
{
Print();
cout<<"课内学分:"<<Knxf<<"\t课外学分:"<<Kwxf<<endl;
}
};
void main()
{
Bo A(100100,"张三","男",27,500,10);
Shuo B(200100,"李芳","女",24,9,1);
Ben C(300100,"王五","男",19,65,6);
A.Print1();
B.Print2();
C.Print3();
getchar();
}