28刘小虎C++实验3文档格式.docx

上传人:b****7 文档编号:22569495 上传时间:2023-02-04 格式:DOCX 页数:17 大小:75.66KB
下载 相关 举报
28刘小虎C++实验3文档格式.docx_第1页
第1页 / 共17页
28刘小虎C++实验3文档格式.docx_第2页
第2页 / 共17页
28刘小虎C++实验3文档格式.docx_第3页
第3页 / 共17页
28刘小虎C++实验3文档格式.docx_第4页
第4页 / 共17页
28刘小虎C++实验3文档格式.docx_第5页
第5页 / 共17页
点击查看更多>>
下载资源
资源描述

28刘小虎C++实验3文档格式.docx

《28刘小虎C++实验3文档格式.docx》由会员分享,可在线阅读,更多相关《28刘小虎C++实验3文档格式.docx(17页珍藏版)》请在冰豆网上搜索。

28刘小虎C++实验3文档格式.docx

x<

endl;

}

voidf2(doublex)

f2(double)”<

2*x<

voidf3(doublex)

f3(double)”<

3*x<

classD:

publicB{

virtualvoidf1(doublex)

”D:

};

intmain()

{Dd;

B*pb=&

d;

D*pd=&

pb->

f1(1.23);

f2(1.23);

f3(1.23);

f3(3.14);

return0;

解答:

2.编写一个程序,其中设计一个时间类Time,用来保存时、分、秒等私有数据成员,通过重载操作符“+”实现两个时间的相加。

要求将小时范围限制在大于等于0,分钟范围限制在0~59,秒钟范围限制在0~59秒。

【提示】

时间类Time{

Time(inth=0,intm=0,ints=0);

Timeoperator+(Time&

);

voiddisptime(string);

private:

inthourse;

intminutes;

intseconds;

代码如下

string>

classTime

{

Time(inth=0,intm=0,ints=0);

Timeoperator+(Time&

voiddisplay(string);

inthours;

Time:

Time(inth,intm,ints)

hours=h;

minutes=m;

seconds=s;

TimeTime:

operator+(Time&

t1)

Timep;

p.seconds=seconds+t1.seconds;

inttemp=p.seconds;

p.seconds=temp%60;

p.minutes=minutes+t1.minutes+temp/60;

temp=p.minutes;

p.minutes=temp%60;

p.hours=hours+t1.hours+temp/60;

returnp;

voidTime:

display(strings)

cout<

s<

hours<

"

minutes<

seconds<

inth,m,s;

do

{

cout<

输入第一个时间时分秒"

cin>

>

h>

m>

s;

}

while(h<

0||m<

0||m>

59||s<

0||s>

59);

Timet(h,m,s);

输入第二个时间时分秒"

TimeT(h,m,s),t_total;

t_total=t+T;

t_total.display("

输出结果(时/分/秒):

201240420228,刘小虎"

return0;

3.给出下面的抽象基类container;

classcontainer

protected:

doubleradius;

public:

container(doubleradius1);

virtualdoublesurface_area()=0;

virtualdoublevolume()=0;

};

要求建立3个继承container的派生类cube、sphere与cylinder,让每一个派生类都包含虚函数surface_area()和volume(),分别用来计算正方体、球体和圆柱体的表面积及体积。

要求写出主程序,应用C++的多态性,分别计算边长为6.0的正方体、半径为5.0的球体,以及半径为5.0和高为6.0的圆柱体的表面积和体积。

#include<

#definePI3.1415927

classcontainer

protected:

container(doubleradius1){};

classcube:

publiccontainer

cube(doubler):

container(r){radius=r;

}

doublesurface_area()

{

return6*radius*radius;

}

doublevolume()

returnradius*radius*radius;

}

classsphere:

sphere(doubler):

container(r)

radius=r;

return4*PI*radius*radius;

return4*PI*radius*radius*radius/3;

classcylinder:

doubleheight;

cylinder(doubler,doubleh):

height=h;

return2*PI*radius*radius+2*PI*radius*height;

returnPI*radius*radius*height;

intmain()

{

cubea(6.0);

sphereb(5.0);

cylinderc(5.0,6.0);

正方体表面积:

a.surface_area()<

正方体体积:

a.volume()<

球表面积:

b.surface_area()<

球体积:

b.volume()<

圆柱体表面积:

c.surface_area()<

圆柱体体积:

c.volume()<

4.编写一个程序,用于进行集合的并、差和交运算。

例如输入整数集合{954367}和{2469},计算出它们进行集合的并、差和交运算后的结果。

i.可用以下表达式实现整数集合的基本运算:

s1+s2两个整数集合的并运算

s1-s2两个整数集合的差运算

s1*s2两个整数集合的交运算

ii.参考以下Set类的框架,用于完成集合基本运算所需的各项功能。

classset{

set:

set();

voidset:

input(intd);

intset:

length();

getd(inti);

disp();

setset:

operator+(sets1);

operator-(sets1);

operator*(sets1);

operator=(sets1);

intlen;

ints[MAX];

代码如下:

algorithm>

voidjiao(charjiHe1[],intcount1,charjiHe2[],intcount2);

voidbing(charjiHe1[],intcount1,charjiHe2[],intcount2);

voidcha(charjiHe1[],intcount1,charjiHe2[],intcount2);

voiddiKaEr(charjiHe1[],intcount1,charjiHe2[],intcount2);

voidoutput(chara[],intn);

#defineN50

intchoice;

cout<

"

1.交集"

<

endl;

2.并集"

3.差集"

4.笛卡尔集"

cin>

choice;

if(choice==1){

charjiHe1[N],jiHe2[N];

intcount1,count2;

请输入集合1数的个数"

;

count1;

请输入集合1的元素"

for(inti=0;

i<

count1;

i++)

jiHe1[i];

请输入集合2数的个数"

count2;

请输入集合2的元素"

for(intj=0;

j<

count2;

j++)

jiHe2[j];

jiao(jiHe1,count1,jiHe2,count2);

elseif(choice==2){

bing(jiHe1,count1,jiHe2,count2);

elseif(choice==3){

cha(jiHe1,count1,jiHe2,count2);

elseif(choice==4){

diKaEr(jiHe1,count1,jiHe2,count2);

elsereturn0;

system("

pause"

voidjiao(charjiHe1[],intcount1,charjiHe2[],intcount2)

intnum=0;

chara[N];

for(intj=0;

if(jiHe1[i]==jiHe2[j])

a[num++]=jiHe1[i];

sort(a,a+num);

交集为:

output(a,num);

voidbing(charjiHe1[],intcount1,charjiHe2[],intcount2)

intnum1=0;

intcount=0;

charb[N];

b[num1++]=jiHe1[i];

 

j++){

for(intk=0;

k<

k++)

if(jiHe2[j]!

=jiHe1[k]){

count++;

if(count==count1){

b[num1++]=jiHe2[j];

count=0;

sort(b,b+num1);

并集为:

output(b,num1);

voidoutput(chara[],intn)

{"

n-1;

a[i]<

"

;

a[n-1];

}"

voidcha(charjiHe1[],intcount1,charjiHe2[],intcount2)

charc[N];

i++){

if(jiHe1[i]!

=jiHe2[j]){

num++;

if(num==count2){

c[num1++]=jiHe1[i];

num=0;

sort(c,c+num1);

差集为:

output(c,num1);

voiddiKaEr(charjiHe1[],intcount1,charjiHe2[],intcount2)

笛卡尔积为"

//cout<

jiHe1[i]<

jiHe2[j]<

三、结论(写本次实验的收获)

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 表格模板 > 表格类模板

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1