C++实验4要点Word文档下载推荐.docx
- 文档编号:8389934
- 上传时间:2023-05-11
- 格式:DOCX
- 页数:19
- 大小:65.45KB
C++实验4要点Word文档下载推荐.docx
《C++实验4要点Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《C++实验4要点Word文档下载推荐.docx(19页珍藏版)》请在冰点文库上搜索。
:
f1(double)"
x<
endl;
}
voidf2(doublex)
f2(double)"
2*x<
voidf3(doublex)
f3(double)"
3*x<
}
};
classD:
publicB{
D:
voidf2(intx)
f2(int)"
intmain()
{Dd;
B*pb=&
d;
D*pd=&
pb->
f1(1.23);
pd->
f2(1.23);
f3(1.23);
f3(3.14);
return0;
【运行结果截图】:
【运行结果分析】:
函数f1()被定义为虚函数,所以执行pb->
f1(1.23)语句时,程序根据指针pb所指向的的实际对象,调用该对象的成员函数。
而f2()和f3()只是普通的成员函数,不管pb指向哪个对象,程序pb->
f2(1.23)和pb->
f3(1.23)调用的都是基类中定义的的函数。
2、编写一个程序,其中设计一个时间类Time,用来保存时、分、秒等私有数据成员,通过重载操作符“+”实现两个时间的相加。
【要求】:
将小时范围限制在大于等于0,分钟范围限制在0~59分,秒钟范围限制在0~59秒。
【提示】:
时间类Time的参考框架如下:
classTime{
Time(inth=0,intm=0,ints=0);
Timeoperator+(Time&
);
voiddisptime(string);
private:
inthourse;
intminuters;
intseconds;
3、给出下面的抽象基类container。
classcontainer{
protected:
doubleradius;
container(doubleradius);
virtualdoublesurface_area()=0;
virtualdoublevolume()=0;
建立3个继承container的派生类cube、sphere与cylinder,让每一个派生类都包含虚函数surface_area()和volume(),分别用来计算正方体、球体和圆柱体的表面积及体积。
写出主程序,用于C++的多态性,分别计算边长为6.0的正方体、半径为5.0的球体,以及半径为5.0和高为6.0的圆柱体的表面积和体积。
4、编写程序,用于进行集合的并、差和交运算。
例如输入整数集合{954367}和{2469},计算出它们进行集合的并、差和交运算后的结果。
1)可以用以下表达式实现整数集合的运算:
s1+s2两个整数集合的并运算
s1-s2两个整数集合的差运算
s1*s2两个整数集合的交运算
【Set类的框架】:
classSet
{
voidinput(int);
intlength();
voiddisp();
Setoperator+(Sets1);
Setoperator-(Sets1);
Setoperator*(Sets1);
intlen;
ints[MAX];
intm[MAX];
voidSet:
input(intd)//输入数组长度的函数
inti;
len=d;
cout<
输入集合元素"
d<
个:
"
;
for(i=0;
i<
i++)
cin>
>
s[i];
s[i]='
\0'
intSet:
length()//求数组长度的函数
inti=0;
while(m[i]!
='
)
i++;
returni;
disp()//输出最后结果的函数
intk=length();
k;
cout<
m[i]<
SetSet:
operator+(Sets1)//并运算
inti,j;
intt=s1.len;
//防止s1.len的值在下面的运算中被改变
intk=len;
//防止len的值在下面的运算中被改变
len;
i++)//防止s[i]在下面的运算中的改变
m[i]=s[i];
s1.len;
i++)//防止s1.s[i]在下面的运算中的改变
s1.m[i]=s1.s[i];
for(j=0;
j<
t;
j++)
if(m[i]==s1.m[j])
{
for(;
s1.m[j]=s1.m[j+1];
t--;
}
for(j=0;
m[k]=s1.m[j];
k++;
m[k]='
//用于判断数组长度
return*this;
operator-(Sets1)//差运算
for(j=0;
if(s1.m[i]==m[j])
{
for(;
m[j]=m[j+1];
k--;
}
m[k]='
operator*(Sets1)//并运算
inta[MAX],k=0;
if(m[i]==s1.m[j])
a[k]=m[i];
k++;
}
m[i]=a[i];
m[k]='
四、分析与讨论(记录实验过程中出现的主要问题和心得体会)
五、教师评语
签名:
日期:
成绩
附:
程序源代码
1、
2、
#include<
string>
classTime
Timeoperator+(Time&
Time:
Time(inth,intm,ints)
hourse=h;
minuters=m;
seconds=s;
TimeTime:
operator+(Time&
a)
Timetemp;
temp.seconds=(seconds+a.seconds)%60;
temp.minuters=(minuters+a.minuters+(seconds+a.seconds)/60)%60;
temp.hourse=hourse+a.hourse+(minuters+a.minuters+(seconds+a.seconds)/60)/60;
returntemp;
voidTime:
disptime(stringstr)
str;
hourse<
."
minuters<
seconds<
voidinput(int&
h,int&
m,int&
s)//引用
输入时间:
cin>
h>
m>
s;
while(m<
0||m>
59||s<
0||s>
59)
{
******输入时间有误!
请重新输入!
******"
}
{
inth1,m1,s1,h2,m2,s2;
input(h1,m1,s1);
input(h2,m2,s2);
TimeA(h1,m1,s1),B(h2,m2,s2),C;
C=A.operator+(B);
C.disptime("
时间相加后的结果为:
3、
constdoublepi=3.1416;
classcontainer
container(double);
container:
container(doubler)
radius=r;
classcube:
publiccontainer
cube(double);
doublesurface_area();
doublevolume();
cube:
cube(doubler):
container(r)
doublecube:
surface_area()
正方体的表面积为:
6*radius*radius<
return0.0;
volume()
正方体的体积为:
radius*radius*radius<
classsphere:
sphere(double);
sphere:
sphere(doubler):
doublesphere:
球体的表面积为:
4*pi*radius*radius<
球体的体积为:
(4*pi*radius*radius*radius)/3<
classcylinder:
cylinder(double,double);
doublehigh;
cylinder:
cylinder(doubler,doubleh):
high=h;
doublecylinder:
圆柱体的表面积为:
2*pi*radius*radius+2*pi*radius*high<
圆柱体的体积为:
pi*radius*radius*high<
container*ptr;
cubeob1(6.0);
sphereob2(5.0);
cylinderob3(5.0,6.0);
ptr=&
ob1;
ptr->
surface_area();
volume();
ob2;
ob3;
4、
constintMAX=100;
intn;
SetA,B,C;
建立含有几个元素的A集合:
n;
A.input(n);
建立含有几个元素的B集合:
B.input(n);
C=A+B;
A+B为:
C.disp();
C=A-B;
A-B为:
C=A*B;
A*B为:
5、
6、
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- C+ 实验 要点
![提示](https://static.bingdoc.com/images/bang_tan.gif)