沈阳理工C++上机实验Word格式.docx
- 文档编号:6909609
- 上传时间:2023-05-07
- 格式:DOCX
- 页数:20
- 大小:18.84KB
沈阳理工C++上机实验Word格式.docx
《沈阳理工C++上机实验Word格式.docx》由会员分享,可在线阅读,更多相关《沈阳理工C++上机实验Word格式.docx(20页珍藏版)》请在冰点文库上搜索。
students("
李华"
12,20);
s.Show();
定义一个圆类,计算圆的面积和周长
math.h>
constdoublePI=3.14159;
classCircle//圆类
private:
doubler;
//圆的半径
public:
Circle(doubler=0)//构造函数
{
this->
r=r;
}
~Circle()//析构函数
doubleArea()//圆面积
returnPI*r*r;
doublePerim()//圆周长
return2*PI*r;
voidShow()//输出圆的面积和周长
Areais:
Area()<
Perimis:
Perim()<
endl<
doubler=12.5;
Circle:
结果如下:
CircleCir(r);
//建立圆对象
Cir.Show();
//调用圆类的输出函数
}
定义一个本科生类undergradutate,包括学号、姓名、专业这三个数据成员,在此基础上派生出研究生类graduate,并增加导师、发表论文数等属性。
可以通过显示个人信息函数showinfo来查看个人档案。
#include<
classUndergraduate
protected:
longid;
char*name;
char*major;
Undergraduate(longid_val,char*name_val,char*major_val)
id=id_val;
name=newchar[50];
strcpy(name,name_val);
major=newchar[50];
strcpy(major,major_val);
virtualvoidshowInfo();
~Undergraduate()
deletename;
deletemajor;
voidUndergraduate:
showInfo()
cout<
学号"
<
id<
姓名:
"
name<
专业"
major<
endl;
classGraduate:
publicUndergraduate
char*tutor;
shortpaperNumber;
Graduate(longid_val,char*name_val,char*major_val,
char*tutor_val,shortpaperNumber_val):
Undergraduate(id_val,name_val,major_val)
tutor=newchar[100];
strcpy(tutor,tutor_val);
paperNumber=paperNumber_val;
voidshowInfo()
导师"
tutor<
发表论文"
paperNumber<
篇"
~Graduate()
deletetutor;
intmain()
Undergraduateundergraduate(2005131448,"
刘云"
"
计算机"
);
Graduategraduate(2003131452,"
Jack"
kate"
10);
undergraduate.showInfo();
graduate.showInfo();
return0;
描述一个学校的情况,描述对象包括教师和学生。
声明一个类People,其中包含成员变量name(姓名)、age(年龄)、add(地址)作为教师类和学生类的基类。
在学生类中增加成员变量所在分院、年级,在教师类中增加专业、工资。
在每一类中均有构造函数和析构函数,分别用于输出“这是People类(或学生类或教师类)的构造(或析构)函数!
”
实验要求:
1、编写程序声明People类,共有成员变量name(姓名)、age(年龄)、add(地址)。
2、分别构造派生类teacher和student。
3、在两个派生类中分别设置成员函数,输出teacher和student的信息。
classpeople
protected:
stringadd;
people(stringname,intage,stringadd)
name=name;
age=age;
add=add;
people的构造函数被调用"
~people(){cout<
people的析构函数被调用"
classstudent:
publicpeople
stringdepartment;
stringgrade;
student(stringname,intage,stringadd,stringdepartment,stringgrade):
people(name,age,add)
department=department;
grade=grade;
student的构造函数被调用"
~student(){cout<
student的析构函数被调用"
voidshow()
\t"
add<
department<
grade<
classteacher:
stringmajor;
doublesalary;
teacher(stringname,intage,stringadd,stringmajor,doublesalary):
major=major;
salary=salary;
teacher的构造函数被调用"
~teacher(){cout<
teacher的析构函数被调用"
name<
age<
add<
salary<
intmain()
孙云"
19,"
五号大街"
"
物理系"
二年级"
teachert("
45,"
桃园小区"
计算机专业"
2500);
s.show();
t.show();
设计两个类,一个类描述点,另一个类描述圆,圆由圆心和半径构成,圆类由点类派生而来,其中圆心的特性描述由点类继承下来
classPoint
{intm_x,m_y;
Point(intx,inty){m_x=x;
m_y=y;
intget_x(){returnm_x;
intget_y(){returnm_y;
classCircle:
publicPoint
{doubleradius;
Circle(intx,inty,doubler):
Point(x,y)
{radius=r;
doubleArea(){return3.14*radius*radius;
}
intget_centreX(){returnget_x();
intget_centreY(){returnget_y();
intx,y;
doubler;
cout<
x="
;
cin>
>
x;
y="
y;
r="
r;
Circlec(x,y,r);
thecentreoftheCircleis"
c.get_centreX()<
and"
c.get_centreY()<
theAreaoftheCircleis"
c.Area()<
实验内容:
一、下列container类是一个公共的抽象基类,其中定义有求表面积和体积的纯虚函数,公共数据成员radius作为球的半径,正方体的边长和圆柱体的底面半径,要求根据此类设计程序来计算正方体、球、圆柱的表面积和体积
classcontainer
doubleradius;
container(doubleradius)
container:
radius=radius;
virtualdoublesurface_area()=0;
virtualdoublevolume()=0;
二、计算几种不同的三维图形的表面积和体积,这里定义一个抽象类Cshape,将其成员函数显示基本图形信息函数DisAttr()、计算面积函数Sarea()和计算体积函数Volume()定义为纯虚函数,根据此抽象类派生出球体、正方体、长方体和圆柱体,并分别重新实现基类中的纯虚函数来显示输出计算结果。
一、1、根据所给的抽象类container派生出要描述的三个类,在这三个类中都要具有求表面积和体积的重定义版本,并在圆柱体类中定义一个变量height作为圆柱体的高。
2、函数中定义一个基类指针变量,用这个变量指向不同的派生类对象,来调用不同类的函数版本,以此来实现多态性。
3、在虚函数的重定义版本中,可以使用内联函数直接返回结果。
二、1、声明形状类Cshape为抽象类,并将其成员函数disattr()、sarea()、volume()定义为纯虚函数。
2、声明四个派生类:
球体类、正方体类、长方体类、圆柱体类,并重新实现基类中的纯虚函数。
3、在main函数中定义基类的指针数组,分别用来指向四个不同的派生类,并初始化各派生类的对象。
4、在main函数中计算所有三维图形的总的表面积和体积,并计算三维图形占总表面积总体积的百分比
一
#definepi3.14
{protected:
doubleradius;
container(doubler)
{radius=r;
virtualdoubleArea()=0;
virtualdoublevolume()=0;
classCube:
publiccontainer
{private:
Cube(doubler=0);
doubleArea();
doublevolume();
Cube:
Cube(doubler):
container(r)
{radius=r;
doubleCube:
Area()
{return6*radius*radius;
volume()
{returnradius*radius*radius;
classCylinder:
doubleheight;
Cylinder(doubler=0,doubleh=0);
Cylinder:
Cylinder(doubleh,doubler):
{height=h;
doubleCylinder:
{returnpi*2*radius*(radius+height);
{returnpi*radius*radius*height;
classSphere:
Sphere(doubler=0);
Sphere:
Sphere(doubler):
doubleSphere:
{return4*pi*radius*radius;
{return4*pi*radius*radius*radius/3;
{container*p;
Cubec(10);
Spheres(10);
Cylindercy(5,10);
p=&
c;
CubeArea:
p->
Cubevolume:
volume()<
cy;
CylinderArea:
Cylindervolume:
s;
SphereArea:
Spherevolume:
return1;
二
classCshape
virtualvoidDisAttr()=0;
virtualdoubleSarea()=0;
virtualdoubleVolume()=0;
classSphere:
publicCshape
voidDisAttr(){cout<
这是球体"
Sphere(doubler):
radius(r){}
doubleSarea(){return4*3.14*radius*radius;
doubleVolume(){return4*3.14*radius*radius*radius/3;
classSquare:
这是正方体"
Square(doubler):
doubleSarea(){return6*radius*radius;
doubleVolume(){returnradius*radius*radius;
classBox:
doublewidth,length,radius;
这是长方体"
Box(doublew,doublel,doubler):
radius(r){width=w;
length=l;
doubleSarea(){return2*(length*width+length*radius+width*radius);
doubleVolume(){returnradius*length*width;
classCylinder:
doubleheight,radius;
这是圆柱体"
Cylinder(doubleh,doubler):
radius(r){height=h;
doubleSarea(){return3.14*2*radius*(radius+height);
doubleVolume(){return3.14*radius*radius*height;
doubleSareaSum=0;
doubleVolumeSum=0;
Cshape*pS[5];
pS[1]=newSphere
(1);
pS[2]=newSquare
(2);
pS[3]=newBox(1,2,3);
pS[4]=newCylinder(4,2);
SareaSum+=pS[1]->
Sarea();
SareaSum+=pS[2]->
SareaSum+=pS[3]->
SareaSum+=pS[4]->
总表面积是:
SareaSum<
各三维图形占总表面积的百分比如下:
球体:
100*pS[1]->
Sarea()/SareaSum<
%"
正方体:
100*pS[2]->
长方体:
100*pS[3]->
圆柱体:
100*pS[4]->
VolumeSum+=pS[1]->
Volume();
VolumeSum+=pS[2]->
VolumeSum+=pS[3]->
VolumeSum+=pS[4]->
总体积是:
VolumeSum<
各三维图形占总体积的百分比如下:
Volume()/VolumeSum<
)、编写一个类,声明一个数据成员和一个静态数据成员,让构造函数初始化数据成员,并把静态数据成员加1,让析构函数把静态数据成员减1
iostream.h>
classexample
example(intnum)
B=num;
A++;
voidDisplay()
B="
B<
A="
A<
~example()
A--;
intB;
staticintA;
intexample:
A=0;
voidmain()
examplea(20),b(30),c(40);
a.Display();
b.Display();
c.Display();
设计一个程序,其中有三个类CBank、BBank和GBank,分别为中国银行类、工商银行类和农业银行类。
每个类都包含一个私有数据balance用于存放储户在该行的存款数,另有一个友元函数total用于计算储户在这三家银行中的总存款数
using
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 沈阳 理工 C+ 上机 实验