西安交大C++随堂练习13.docx

上传人:b****4 文档编号:24647092 上传时间:2023-05-29 格式:DOCX 页数:29 大小:277.02KB
下载 相关 举报
西安交大C++随堂练习13.docx_第1页
第1页 / 共29页
西安交大C++随堂练习13.docx_第2页
第2页 / 共29页
西安交大C++随堂练习13.docx_第3页
第3页 / 共29页
西安交大C++随堂练习13.docx_第4页
第4页 / 共29页
西安交大C++随堂练习13.docx_第5页
第5页 / 共29页
点击查看更多>>
下载资源
资源描述

西安交大C++随堂练习13.docx

《西安交大C++随堂练习13.docx》由会员分享,可在线阅读,更多相关《西安交大C++随堂练习13.docx(29页珍藏版)》请在冰豆网上搜索。

西安交大C++随堂练习13.docx

西安交大C++随堂练习13

西安交通大学实验报告

一.实验目的

本次实验是为了锻炼对新学的语句、新符号的应用,提高我们活学活用语句的水平。

本次实验主要内容是继承的概念、基类和派生类的区别,三种继承方法的应用,多重继承等等。

二.实验内容

(-)实验题目一:

设计一个Person类和其派生类教师teacher,新增的属性有专业、职称和主讲课程,并为这些属性定义相应的方法。

1.程序源代码

#include

usingnamespacestd;

classPerson

{

protected:

charname[20];

charsex[5];

intage;

public:

voidset(chara[20],charb[5],intc){strcpy(name,a);strcpy(sex,b);age=c;}

voidshow();

};

voidPerson:

:

show()

{

cout<

}

classteacher:

publicPerson

{

private:

charzhuanye[10];

charzhicheng[10];

charkecheng[20];

public:

voidset(chara[20],charb[5],intc,chard[10],chare[10],charf[20]){strcpy(name,a);strcpy(sex,b);age=c;strcpy(zhuanye,d);strcpy(zhicheng,e);strcpy(kecheng,f);}

voidshow();

};

voidteacher:

:

show()

{

cout<

}

intmain()

{

Persona;

teacherb;

a.set("王越","男",35);

b.set("刘怡","女",25,"音乐","讲师","音乐鉴赏”);

cout<<"姓名"<<"\t"<<"性别"<<"\t"<<"年龄"<<"\t"<<"专业"<<"\t"<<"职称"<<"\t"<<"教授课程"<

a.show();

b.show();

return0;

}

2.实验结果

(二)实验题目二:

设计一个汽车类vehicle,包含数据成员。

小车类car是它的私有子类,其中包括载人数。

卡车是私有子类包括载人数和载重量。

每个类都有相关数据的输出方法。

1.程序源代码

#include

usingnamespacestd;

classvehicle

{

protected:

intwheels;

floatweight;

public:

voidset(inta,floatb){wheels=a;weight=b;}

voidshow();

};

voidvehicle:

:

show()

{

cout<

}

classcar:

publicvehicle

{

private:

intpassenger_load;

public:

voidset1(inta,floatb,intc){set(a,b);passenger_load=c;}

voidshow();

};

voidcar:

:

show()

{

cout<

}

classtruck:

publicvehicle

{

private:

intpassenger_load;

floatpayload;

public:

voidset2(inta,floatb,intc,floatd){set(a,b);passenger_load=c;payload=d;}

voidshow();

};

voidtruck:

:

show()

{

cout<

}

intmain()

{

vehiclea;

carb;

truckc;

a.set(4,2);

b.set1(6,15,2);

c.set2(8,20,56,8);

cout<<"车轮数"<<"\t"<<"车重(吨)"<<"\t"<<"载人数"<<"\t"<<"载重量(吨)"<

a.show();

b.show();

c.show();

return0;

}

2.实验结果

(三)实验题目三:

研究生类既有学生类的特征,又有教师类的特征,试通过多重继承说明一个研究生类,包括设置学生和教师的相关属性以及显示学生和教师的相关属性等功能。

1.程序源代码

#include

usingnamespacestd;

classxuesheng

{

protected:

charzhuanye[20];

private:

charname[20];

charsex[5];

intage;

public:

voidset(chara[20],charb[20],charc[5],intd){strcpy(zhuanye,a);strcpy(name,b);strcpy(sex,c);age=d;}

voidshow();

};

voidxuesheng:

:

show()

{

cout<

}

classjiaoshi

{

protected:

chargongzi[20];

private:

charname[20];

charsex[5];

intage;

public:

voidset(chara[20],charb[20],charc[5],intd){strcpy(gongzi,a);strcpy(name,b);strcpy(sex,c);age=d;}

voidshow();

};

voidjiaoshi:

:

show()

{

cout<

}

classyanjiusheng:

publicxuesheng,publicjiaoshi

{

private:

charname[20];

charsex[5];

intage;

charnianji[10];

public:

voidset(chara[20],charb[20],charc[5],intd,chare[10],charf[20]){strcpy(gongzi,a);strcpy(name,b);strcpy(sex,c);age=d;strcpy(nianji,e);strcpy(zhuanye,f);}

voidshow();

};

voidyanjiusheng:

:

show()

{

cout<

}

intmain()

{

xueshenga;

jiaoshib;

yanjiushengc;

a.set("能动","张伟","男",21);

b.set("5000","李成","女",40);

c.set("1500","王艺","女",25,"研二","材料");

cout<<"姓名"<<"\t"<<"性别"<<"\t"<<"年龄"<<"\t"<<"专业"<<"\t"<<"工资"<<"\t"<<"年级"<

a.show();

b.show();

c.show();

return0;

}

2.实验结果

(四)实验题目四:

用继承的方法描述下列类:

商品类、家电类、电视类。

自己设计其属性和方法,编写主函数对各类事物的特征和功能进行模拟。

1.程序源代码

#include

#include

usingnamespacestd;

classshang

{

private:

doubleprice;

charhao[20];

charming[20];

public:

shang(doubleprice,charhao[],charming[])

{

this->price=price;

strcpy(this->hao,hao);

strcpy(this->ming,ming);

}

voidshow()

{

cout<<"商品名:

"<

"<

"<

}

};

classjia:

publicshang

{

private:

intdianya;

public:

jia(doubleprice,charhao[],charming[],intdianya):

shang(price,hao,ming)

{

this->dianya=dianya;

}

voidshow()

{

shang:

:

show();

cout<<""<<"电压:

"<

}

};

classds:

publicjia

{

private:

intchicun;

public:

ds(doubleprice,charhao[],charming[],intdianya,intchicun):

jia(price,hao,ming,dianya)

{

this->chicun=chicun;

}

voidshow()

{

jia:

:

show();

cout<<""<<"屏幕大小:

"<

}

};

intmain()

{

doubleprice;

charhao[20];

charming[20];

cout<<"请输入商品的信息(商品名,型号,价格):

";

cin>>ming>>hao>>price;

shangaaa(price,hao,ming);

cout<<"商品的信息为:

";

aaa.show();

intdianya;

cout<

cout<<"请输入家电的电源电压:

";

cin>>dianya;

jiabbb(price,hao,ming,dianya);

cout<<"家电的信息为:

";

bbb.show();

intchicun;

cout<

cout<<"请输入电视的屏幕尺寸:

";

cin>>chicun;

dsccc(price,hao,ming,dianya,chicun);

cout<<"电视的信息为:

";

ccc.show();

return0;

}

2.实验结果

(五)实验题目五:

定义一个一元三次方程类,类中至少包含构造函数、求根函数、输出方程根的函数,相加函数,输出方程函数等5个函数,并编写主函数测试各成员函数。

提示:

①两个一元三次方程对应相加仍然是一个一元三次方程。

②求根方法采用迭代方法,迭代公式为:

Xn+1=Xn-F(Xn)/F’(Xn),结束迭代的条件|F(Xn+1)|<10-7与|Xn+1-Xn|<10-7。

③一元三次方程的一般形式如下:

dX3+cX2+bX+a=0。

将一元三次方程类作为基类,派生出一元四次方程类,派生类的成员函数与基类相同,大致也有5个函数,编写主函数加以测试。

1.程序源代码

#include

#include

usingnamespacestd;

classsan

{

private:

inta;

intb;

intc;

intd;

public:

san(inta,intb,intc,intd)

{

this->a=a;

this->b=b;

this->c=c;

this->d=d;

}

voidgen();

voidshow1();

voidjia(san&k);

voidshow2();

};

voidsan:

:

gen()

{

doublex;

x=0;

do

{

x=x-(a*x*x*x+b*x*x+c*x+d)/(3*a*x*x+2*b*x+c);

}

while((fabs(a*x*x*x+b*x*x+c*x+d)<1e-7)&&(fabs((a*x*x*x+b*x*x+c*x+d)/(3*a*x*x+2*b*x+c))<1e-7));

cout<<"原方程在0附近的根为:

"<

}

voidsan:

:

show1()

{

cout<<"原方程为:

"<

gen();

}

voidsan:

:

jia(san&k)

{

a=a+k.a;

b=b+k.b;

c=c+k.c;

d=d+k.d;

}

voidsan:

:

show2()

{

cout<<"两方程相加的结果为:

"<

cout<

}

classsi:

publicsan

{

private:

inta1;

intb1;

intc1;

intd1;

inte1;

public:

si(inta,intb,intc,intd,inta1,intb1,intc1,intd1,inte1):

san(a,b,c,d)

{

this->a1=a1;

this->b1=b1;

this->c1=c1;

this->d1=d1;

this->e1=e1;

}

voidgen1();

voidshow11();

voidjia1(si&m);

voidshow21();

};

voidsi:

:

gen1()

{

doubley;

y=0;

do

{

y=y-(a1*y*y*y*y+b1*y*y*y+c1*y*y+d1*y+e1)/(4*a1*y*y*y+3*b1*y*y+2*c1*y+d1);

}

while((fabs(a1*y*y*y*y+b1*y*y*y+c1*y*y+d1*y+e1)<1e-7)&&(fabs((a1*y*y*y*y+b1*y*y*y+c1*y*y+d1*y+e1)/(4*a1*y*y*y+3*b1*y*y+2*c1*y+d1))<1e-7));

cout<<"原方程在0附近的根为:

"<

}

voidsi:

:

show11()

{

cout<<"原方程为:

"<

gen1();

}

voidsi:

:

jia1(si&m)

{

a1=a1+m.a1;

b1=b1+m.b1;

c1=c1+m.c1;

d1=d1+m.d1;

e1=e1+m.e1;

}

voidsi:

:

show21()

{

cout<<"两方程相加的结果为:

"<

cout<

}

intmain()

{

inta;

intb;

intc;

intd;

inte;

intf;

intg;

inth;

inte1;

intj1;

cout<<"请输入一元三次方程的四个系数:

";

cin>>a>>b>>c>>d;

sanfang1(a,b,c,d);

fang1.show1();

cout<<"请输入需要相加的一元三次方程的四个系数:

";

cin>>e>>f>>g>>h;

sanfang2(e,f,g,h);

fang2.jia(fang1);

fang2.show2();

cout<<"************************************************"<

cout<<"请输入第五个系数构成一元四次方程:

";

cin>>e1;

sifang3(a,b,c,d,a,b,c,d,e1);

fang3.show11();

cout<<"请输入需要相加的一元四次方程的第五个系数:

";

cin>>j1;

sifang4(a,b,c,d,a,b,c,d,j1);

fang4.jia1(fang3);

fang4.show21();

return0;

}

2.实验结果

(六)实验题目六:

从第7章类和对象

(一)实验题目翻译机器人类派生出加密专家类,即要增加两个数据成员,分别能够存放密文字符串charmiw[200]和明文字符串charmingw[200]。

另增加四个成员函数,加密函数、解密函数、输出明文函数、输出密文函数。

加密方法为:

先将明文置逆,然后采用凯撒加密,密钥为6。

注意明文字符可以是键盘上任意字符,只加密大写字母、小写字母,数字字符。

数字字符加密'0'变成'6','1'变成'7',......'9'变成'5'。

编写主函数加以测试。

注意每次加密,密文和明文字符串就发生改变,每次解密,密文和明文字符串也改变。

1.程序源代码

#include

usingnamespacestd;

classfanyi

{

private:

charming[20];

intnian;

intxingneng;

public:

fanyi(charming[],intnian,intxingneng)

{

strcpy(this->ming,ming);

this->nian=nian;

this->xingneng=xingneng;

}

voidtran_weekday();

voidtran_month();

voidtrans_int();

};

voidfanyi:

:

tran_weekday()

{

intweekday;

cout<<"请?

输?

入?

一?

个?

数簓字?

(辍?

到?

7)?

代洙?

表括?

一?

周ü中D的?

某3天?

阰";

cin>>weekday;

cout<<"翻?

译?

的?

结á果?

为a:

阰";

switch(weekday)

{

case1:

cout<<"Monday";break;

case2:

cout<<"Tuesday";break;

case3:

cout<<"Wednesday";break;

case4:

cout<<"Thursday";break;

case5:

cout<<"Friday";break;

case6:

cout<<"Saturday";break;

case7:

cout<<"Sunday";break;

}

}

voidfanyi:

:

tran_month()

{

intmonth;

cout<<"请?

输?

入?

一?

个?

数簓字?

(辍?

到?

12)?

代洙?

表括?

一?

个?

月?

份:

阰";

cin>>month;

cout<<"翻?

译?

的?

结á果?

为a:

阰";

switch(month)

{

case1:

cout<<"January";break;

case2:

cout<<"February";break;

case3:

cout<<"March";break;

case4:

cout<<"April";break;

case5:

cout<<"May";break;

case6:

cout<<"June";break;

case7:

cout<<"July";break;

case8:

cout<<"August";break;

case9:

cout<<"September";break;

case10:

cout<<"October";break;

case11:

cout<<"November";break;

case12:

cout<<"December";break;

}

}

voidfanyi:

:

trans_int()

{

intk;

cout<<"请?

输?

入?

一?

个?

整?

数簓:

阰";

cin>>k;

cout<<"翻?

译?

的?

结á果?

为a:

阰";

intx,y;

x=k/10;

y=k%10;

if(x==2)cout<<"twenty";

elseif(x==3)cout<<"thirty";

elseif(x==4)cout<<"forty";

elseif(x==5)cout<<"fifty";

elseif(x==6)cout<<"sixty";

elseif(x==7)cout<<"seventy";

elseif(x==8)cout<<"eighty";

elseif(x==9)cout<<"ninty";

elseif(x==0)

{

if(y==0)cout<<"zero";

elseif(y==1)cout<<"one";

elseif(y==2)cout<<"two";

elseif(y==3)cout<<"three";

elseif(y==4)cout<<"four";

else

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

当前位置:首页 > 经管营销 > 人力资源管理

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

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