The number of Prime between 250~300 is 10
251 257 263 269 271 277 281 283 289 293
实验十二 1.实验目的 通过本次实验
(1)理解继承与派生的概念;
(2)掌握派生类定义格式与使用方法;
(3)初步掌握派生类构造函数的定义与使用方法,理解构造函数的调用过程,及基类成员的初始化过程;
(4)理解冲突、支配规则与赋值兼容性原则的概念。 2.实验要求
(1)编写实验程序;
(2)在VC++运行环境中,输入源程序; (3)编译运行源程序;
(4)输入测试数据进行程序测试; (5)写出运行结果。 3.实验内容
(1)定义描述职工档案的类Archives,私有数据成员为职工号(No)、姓名(Name[8])、性别(Sex)、年龄(Age)。成员函数有:构造函数、显示职工信息的函数Show()。再由职工档案类派生出职工工资类Laborage,在职工工资类Laborage中新增数据成员:应发工资(SSalary)、社保金(Security)、实发工资(Fsalary),其成员函数有:构造函数,计算实发工资的函数Count(),计算公式为:实发工资=应发工资-社保金。显示职工档案及工资的函数Display()。在主函数中用Laborage类定义职工对象lab,并赋初始值(1001,”Cheng”,’M’,21,2000,100),然后显示职工档案与工资。
(2)定义描述矩形的类Rectangle,其数据成员为矩形的中心坐标(X,Y)、长(Length)与宽(Width)。成员函数为计算矩形面积的函数Area()与构造函数。再定义描述圆的类Circle,其数据成员为圆的中心坐标(X,Y)与半径R,其成员函数为构造函数。再由矩形类与圆类多重派生出长方体类Cuboid,其数据成员为长方体的高(High)与体积(Volume)。成员函数为:构造函数,计算体积的函数Vol(),显示矩形坐标(X,Y)、长方体的长、宽、高与体积的函数Show()。主函数中用长方体类定义长方体对象cub,并赋初始值(10,10,10,20,30,30,10,10),最后显示长方体的矩形坐标(X,Y)与长方体的长、宽、高与体积。
(3)定义个人信息类Person,其数据成员有姓名、性别、出生年月。并以Person为基类定义一个学生的派生类Student,增加描述学生的信息:班级、学号、专业、英语成绩和数学成绩。再由基类Person定义一个职工的派生类Employee,增加描述职工的信息:部门、职务、工资。编写程序实现学生与职工信息的输入与输出。 4.解答参考 (1)
# include
{ private: int No;
char Name[8]; char Sex; int Age; public:
Archives(int n,char name[],char s,int a) { No=n;
strcpy(Name,name); Sex=s; Age=a; }
void Show(void)
{ cout<<\ <<\ } };
class Laborage:public Archives { private:
float SSalary,Security,Fsalary; public:
Laborage(int n,char name[],char s,int a,float ss,float se): Archives(n,name,s,a) { SSalary=ss; Security=se; }
void Count() {
Fsalary=SSalary-Security; }
void Display(void) { Show();
cout<<\ <<'\\t'<<\ } };
void main(void)
{ Laborage lab(1001,\ lab.Count(); lab.Display(); }
程序运行结果:
No=1001 Name=Zhou Sex=M Age=52 SSalary=2000 Security=200 Fsalary=1800
(2)
# include
class Rectangle //定义一个长方体类 { protected:
float Length,Width;
float Centerx,Centery; public:
Rectangle(float l,float w,float x,float y) { Length=l; Width=w; Centerx=x; Centery=y; }
float Area(void)
{ return Length*Width;} };
class Circle //定义一个圆形类 { protected:
float radius;
float Centerx,Centery; public:
Circle(float r,float x,float y) { radius=r;
Centerx=x; Centery=y; }
double Area(void)
{ return radius*radius*PI;} };
class Cuboid:public Rectangle,public Circle //由基类Rectangle、Circle派生出类Cuboid { private:
float High;
double RVolume,CVolume; public:
Cuboid(float l,float w,float x1,float y1,float r,float x2,float y2,float h):Rectangle(l,w,x1,y1),Circle(r,x2,y2) { High=h;}
void Vol(void) //分别计算长方体和圆柱体的体积 { RVolume=Rectangle::Area()*High; CVolume=Circle::Area()*High; }
void Show(void) //分别显示长方体和圆柱体的信息
{ cout<<\ <<\
cout<<\ < cout<<\olume=\olume<<'\\n'; cout<<\ cout<<\ < cout<<\olume=\ } }; void main (void) { Cuboid cub(10,10,10,20,30,30,10,10); cub.Show(); } 程序运行结果: Length=10 Width=10 High=10 Rectangle Center coordinate = 10,20 Rectangle Volume=1000 Radius=30 High=10 Circle Center coordinate = 30,10 Circle Volume=28274.3 (3) # include char Name[8]; char Sex; char Birth[10]; public: Person() {} Person(char name[],char sex,char birth[]) { strcpy(Name,name); Sex=sex; strcpy(Birth,birth); } void Show() { cout< }; class Student:public Person { private: char Sclass[10]; int No; char Major[10]; float Eng,Math; public: Student():Person() {} Student(char name[],char sex,char birth[],char sclass[],int no,char major[],float eng,float math):Person(name,sex,birth) { strcpy(Sclass,sclass); No=no; strcpy(Major,major); Eng=eng; Math=math; } void Print() { Person::Show(); cout< cout< class Employee :public Person { private: char Department[10]; char Title[10]; float Salary; public: Employee():Person() {} Employee(char name[],char sex,char birth[],char department[10],char title[10], float salary) : Person(name,sex,birth) { strcpy(Department,department); strcpy(Title,title); Salary=salary; } void Print() { Person::Show(); cout< cout<