C++总复习.docx

上传人:b****3 文档编号:27281892 上传时间:2023-06-28 格式:DOCX 页数:46 大小:27.19KB
下载 相关 举报
C++总复习.docx_第1页
第1页 / 共46页
C++总复习.docx_第2页
第2页 / 共46页
C++总复习.docx_第3页
第3页 / 共46页
C++总复习.docx_第4页
第4页 / 共46页
C++总复习.docx_第5页
第5页 / 共46页
点击查看更多>>
下载资源
资源描述

C++总复习.docx

《C++总复习.docx》由会员分享,可在线阅读,更多相关《C++总复习.docx(46页珍藏版)》请在冰豆网上搜索。

C++总复习.docx

C++总复习

1、画出类的继承关系图,并且写出程序的运行结果!

(15分)

2、写出派生类的执行顺序与控制属性!

(15分)

3、画出类的继承关系图,并标出生成子类对象时构造函数的

顺序,并写出程序执行的结果!

(20分)

4、写出递归程序调用的具体过程!

(15分)

5、三选一(10分)

(1)按照运行结果输出完善填空!

(2)完善程序,使之完成动态联编!

(3)按结果修改程序错误

6、编程(六选一)(25分)

一、继承与派生的编程题:

1、Box类包含三个私有数据成员a(立方体边长)、volume(体积)和area(表面积),另有两个构造函数以及seta()(设置立方体边长)、getvolume()(计算体积)、getarea(计算表面积)和disp(输出结果)。

请声明并实现该类,并写出主函数进行测试,长方体的参数要求从键盘输入,并输出其表面积和体积。

#include

usingnamespacestd;

classBox

{

private:

floata;//立方体边长

floatvolume;//体积

floatarea;//表面积

public:

Box()//构造函数1

{

a=0.0;

volume=0.0;

area=0.0;

}

Box(floatx):

a(x){}//构造函数2

voidseta()//设置立方体边长

{

cout<<"entera:

";

cin>>a;

}

floatgetvolume();//计算体积

floatgetarea();//计算表面积

voiddisp();//输出结果

};

floatBox:

:

getvolume()

{

volume=a*a*a;

returnvolume;

}

floatBox:

:

getarea()

{

area=6*a*a;

returnarea;

}

voidBox:

:

disp()

{

cout<<"\ta="<

<<"\n\tarea="<

}

intmain()

{

Boxbox1,box2

(1);

cout<<"box1"<

box1.seta();

box1.disp();

cout<<"box2

(1)"<

box2.disp();

return0;

}

2、设计一个长方形类(Rectangle),包含两个私有的数据成员length,width,要求能求其面积;再从Rectangle派出一个长方体(Volume),要求能求其体积。

请声明并实现这两个类,并在主函数中分别定义这两个类的对象,并打印出相应的面积和体积。

#include

usingnamespacestd;

classRectangle//长方形类

{

private:

floatlength;//长

floatwidth;//宽

public:

voidgetrec();//输入长和宽

voidputrec();//输出长方行

floatarea()//面积

{

returnlength*width;

}

};

voidRectangle:

:

getrec()

{

cout<<"enterlength:

";

cin>>length;

cout<<"\nenterwidth:

";

cin>>width;

}

voidRectangle:

:

putrec()

{

cout<

<

}

classVolume:

publicRectangle//Rectangle派出一个长方体(Volume)

{

private:

floathigh;//高

public:

floatVolum()//求体积

{

returnhigh*area();

}

voidgetvol()

{

getrec();

cout<<"\nenterhigh:

";

cin>>high;

}

voidputvol()

{

putrec();

cout<

}

};

intmain()

{

Rectanglerec;

rec.getrec();

rec.putrec();

Volumevol;

vol.getvol();

vol.putvol();

return0;

}

3、定义一个物体基类object,有数据成员重量weight,有构造函数对数据成员weight进行初始化,有成员函数打印重量信息PrintWeight。

从object类派生出盒子类box,增加数据成员高度heigh和宽度width,并定义派生类box类的构造函数对数据成员weight、height、width进行初始化,有成员函数PrintAll打印数据成员weight、height、width值。

在主函数中创建一个box对象,并初始化其所有数据成员,调用成员函数将weight、height、width值信息显示。

#include

usingnamespacestd;

classobject//基类物体object

{

private:

floatweight;//重量

public:

object(floatw):

weight(w){}

voidprintweight()

{

cout<<"weight="<

}

};

classbox:

publicobject

{

private:

floatheigh,width;

public:

box(floatwe,floathe,floatwi):

object(we),heigh(he),width(wi){}

voidprintall();

};

voidbox:

:

printall()

{

printweight();

cout<

<<"width="<

}

intmain()

{

boxb(2,1.5,3);

b.printall();

return0;

}

4,自行车(Bicycle)和汽车(Motorcar)都是车辆(Vehicle),它们有共同的属性最大速度(maxSpeed)和重量(weight),也有各自不同的特性,比如自行车的高度(height)和汽车的座位数(seatNum)。

现有车辆若干(设N=3),将其输入并放入一个指针数组,每个车辆需要设置其属性。

输入后分类显示各自属性(即自行车和汽车分别显示各自属性)。

#include

#defineN3

classV

{

public:

V(intm,intw)

{k=m;l=w;}

virtualvoidPrint()

{cout<<""<

private:

intk,l;

};

classB:

publicV

{

public:

B(inti,intj,inth):

V(i,j)

{l=h;}

voidPrint(inti,intj,inth)

{

cout<<"自行车的高度为:

"<

cout<<"自行车的最大速度为:

"<

cout<<"自行车的重量为:

"<

}

private:

intl;

};

classM:

publicV

{

public:

M(intp,intt,ints):

V(p,t)

{j=s;}

voidPrint(intp,intt,ints)

{

cout<<"汽车的座位数为:

"<

cout<<"汽车的最大速度为:

"<

cout<<"汽车的重量为:

"<

}

private:

intj;

};

voidmain()

{

V*p[N];

intn;

for(inti(0);i

{

cout<<"请输入车的种类,1为自行车,0为汽车"<

cin>>n;

if(n==1)

{

inta,b,c;

cout<<"请输入自行车的高度,最大速度和重量"<

cin>>a>>b>>c;

p[i]=newB(a,b,c);

}

else

{

intx,y,z;

cout<<"请输入汽车的座位数最大速度和重量"<

cin>>x>>y>>z;

p[i]=newM(x,y,z);

}

}

p[0]->Print();

p[1]->Print();

p[2]->Print();

}//另外一个

#includeusingnamespacestd;#defineN3classV{private:

intk,l;public:

V(intm,intw){k=m;l=w;}virtualvoidPrint(){cout<<""<

publicV{private:

intl;public:

B(inti,intj,inth):

V(i,j){l=h;}voidPrint();};voidB:

:

Print(){cout<<"自行车的高度为:

"<

"<

"<

publicV{public:

M(intp,intt,ints):

V(p,t){j=s;}voidPrint();private:

intj;};voidM:

:

Print(){cout<<"汽车的座位数为:

"<

"<

"<>n;if(n==1){inta,b,c;cout<<"请输入自行车的高度,最大速度和重量"<>a>>b>>c;p[i]=newB(a,b,c);}else{intx,y,z;cout<<"请输入汽车的座位数最大速度和重量"<>x>>y>>z;p[i]=newM(x,y,z);}}p[0]->Print();p[1]->Print();p[2]->Print();deletep[0];deletep[1];deletep[2];}再另外一个

#include

usingnamespacestd;

#defineN3

classV

{protected:

intm,w;

public:

V(inta,intb){m=a;w=b;}

virtualvoidPrint()

{cout<<""<

classB:

publicV

{private:

inth;

public:

B(inta,intb,intc):

V(a,b)

{h=c;}

voidPrint()

{cout<<"自行车的高度为:

"<

cout<<"自行车的最大速度为:

"<

cout<<"自行车的重量为:

"<

};

classM:

publicV

{

private:

ints;

public:

M(inta,intb,intd):

V(a,b){s=d;}

voidPrint()

{

cout<<"汽车的座位数为:

"<

cout<<"汽车的最大速度为:

"<

cout<<"汽车的重量为:

"<

}

};

voidmain()

{

V*p[N];

intn;

for(inti(0);i

{cout<<"请输入车的种类,1为自行车,0为汽车"<

cin>>n;

if(n==1)

{inta,b,c;

cout<<"请输入自行车的高度,最大速度和重量"<

cin>>a>>b>>c;

p[i]=newB(a,b,c);}

else

{intx,y,z;

cout<<"请输入汽车的座位数最大速度和重量"<

cin>>x>>y>>z;

p[i]=newM(x,y,z);

}

}

p[0]->Print();

p[1]->Print();

p[2]->Print();

deletep[0];

deletep[1];

deletep[2];

}

5、定义Point作为基类,在此基础上派生出圆Circle类,该类含有计算面积的成员函数,并由Circle类派生出圆柱Cylinder类,该类含有计算柱体的表面积和体积的成员函数。

例12.1—

#include

#definepi3.14159

classpoint

{

protected:

intx,inty;

public:

point(inta,intb)

{x=a;y=b;}

voidsetxy(inta=0,intb=0)

{x=a;y=b;}

voidshowpoint()

{cout<<"point:

\n\t("<

};

classcycle:

publicpoint

{protected:

intr;

public:

cycle(intx,inty,intc):

point(x,y)

{r=c;}

voidsetr(intd)

{r=d;}

intcountcycle(){returnpi*r*r;}

voidshowcycle()

{cout<<"cyclearea:

\n\t"<

};

classcylinder:

publiccycle

{inth;public:

cylinder(intx,inty,intr,intd):

cycle(x,y,r)

{h=d;}

intcountcylinderf()

{return2*countcycle()+pi*2*r;}

intcountcylinderv()

{returncountcycle()*h;}

voidseth(intd){h=d;}

voidshowcylinder()

{showpoint();

showcycle();

cout<<"cylinderface:

\n\t"<

\n\t"<

}

};

voidmain()

{cylinderc(1,2,3,4);

c.showcylinder();

c.setxy(3,6);

c.seth(5);

c.setr(6);

c.showcylinder();

}6、编写程序定义人员类Person作为基类,其数据成员为姓名和身份号,在此基础上派生出职员Employee类,该类的数据成员为底薪和工作年数,含有实现相关信息输入和输出的成员函数以及计算并显示奖金和月薪的成员函数。

计算办法:

奖金=10*工作年数,月薪=底薪+奖金。

#include

#include

classPerson

{

private:

charname[20];

charID[20];

public:

voidinput(charna[],charI[])

{strcpy(name,na);

strcpy(ID,I);

}

voidgetname(char*na)

{strcpy(na,name);}

voidgetID(char*I)

{strcpy(I,ID);}

};

classemployee:

publicPerson

{

floatbasepay;

floatworkyears;

public:

setdate(floati,floatj)

{basepay=i;workyears=j;}

floatcountbouns()

{return10*workyears;}

floatcountmonthpay()

{returnbasepay+countbouns();}

};

voidmain()

{charName[20];chariD[20];

employeea;

a.input("Hongjia","20111003637");

a.setdate(500,6);

a.getname(Name);

a.getID(iD);

cout<<"姓名是"<

cout<<"ID号是"<

cout<<"奖金是"<

cout<<"月薪是"<

}

另外:

#include

using namespace std;

class Person

{

private:

char name;

char id;

public:

void input(char *name,char *id)

{

this->name=*name;

this->id=*id;

cout<<"姓名:

"<

"<

}

};

class Employee:

public Person

{

private:

float bs;

float yw;

public:

void inputs();

    float getJJ()

{return 10*yw;}

float getyx()

{return bs+getJJ();}

void disp()

{

cout<<"奖金"<

cout<<"月薪"<

}

};

void Employee:

:

inputs()

{

cout<<"请输入底薪:

"<

cin>>bs;

cout<<"请输入工作年数:

"<

cin>>yw;

}

void main()

{

Employee p;

p.input("George","456534534533454");

p.inputs();

p.disp();

}再另外:

#include

#include

classPerson

{

private:

charname[20];

charID[20];

public:

voidinput(charna[],charI[])

{strcpy(name,na);

strcpy(ID,I);

}

voidgetname(char*na)

{strcpy(na,name);}

voidgetID(char*I)

{strcpy(I,ID);}

};

classemployee:

publicPerson

{

floatbasepay;

floatworkyears;

public:

voidsetdate();

floatcountbouns()

{return10*workyears;}

floatcountmonthpay()

{returnbasepay+countbouns();}

};

voidemployee:

:

setdate()

{

cout<<"请输入底薪"<

cin>>basepay;

cout<<"请输入工作年限"<

cin>>workyears;

};

voidmain()

{charName[20];chariD[20];

employeea;

a.input("Hongjia","20111003637");

a.setdate();

a.getname(Name);

a.getID(iD);

cout<<"姓名是"<

cout<<"ID号是"<

cout<<"奖金是"<

cout<<"月薪是"<

}

林华老师出的编程中一定有三道原题!

打击按一定注意呀!

按照问题就大体可以知道考什么内容了!

因为有些知识点就只有两三个例题的!

大家加油哈!

二、根据下列代码,写出派生类B所含的成员及成员的访问控制属性

1、根据下列代码,写出派生类B所含的成员及成员的访问控制属性

classA{

private:

inta;

protected:

intb;

public:

A(inta1=0,intb1=0){a=a1;b=b1}

intgetA_a(){returna;}

intgetA_b(){returnb;}

};

classB:

publicA{

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

当前位置:首页 > 幼儿教育

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

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