c++面向对象程序设计考试题doc.docx

上传人:b****5 文档编号:3525658 上传时间:2022-11-23 格式:DOCX 页数:46 大小:38.81KB
下载 相关 举报
c++面向对象程序设计考试题doc.docx_第1页
第1页 / 共46页
c++面向对象程序设计考试题doc.docx_第2页
第2页 / 共46页
c++面向对象程序设计考试题doc.docx_第3页
第3页 / 共46页
c++面向对象程序设计考试题doc.docx_第4页
第4页 / 共46页
c++面向对象程序设计考试题doc.docx_第5页
第5页 / 共46页
点击查看更多>>
下载资源
资源描述

c++面向对象程序设计考试题doc.docx

《c++面向对象程序设计考试题doc.docx》由会员分享,可在线阅读,更多相关《c++面向对象程序设计考试题doc.docx(46页珍藏版)》请在冰豆网上搜索。

c++面向对象程序设计考试题doc.docx

c++面向对象程序设计考试题doc

面向对象程序设计试题一

一、单项选择题(在每小题的四个备选答案中,选出一个正确答案,并将正确答案的序号填在题干的括号内。

每小题2分,共40分)

1.在()情况下适宜采用inline定义内联函数。

a.函数体含有循环语句

b.函数体含有递归语句

c.函数代码少、频繁调用

d.函数代码多、不常调用

2.在类中说明的成员可以使用关键字()进行修饰。

a.privateb.extern

c.autod.register

3.如果类a被说明成类b的友元,则()。

a.类a的成员即类b的成员

b.类b的成员即类a的成员

c.类a的成员函数不得访问类b的成员

d.类b不一定是类a的友元

4.定义析构函数时,应该注意()。

a.其名与类名完全相同b.返回类型是void类型

c.无形参,也不可重载d.函数体中必须有delete语句

5.在类中声明转换函数时不能指定()。

a.参数b.访问权限

c.操作d.标识符

6.在派生类中重新定义虚函数时必须在()方面与基类保持一致。

a.参数类型b.参数名字

c.操作内容d.赋值

7.在公有继承的情况下,基类成员在派生类中的访问权限()。

a.受限制b.保持不变

c.受保护d.不受保护

8.通过()调用虚函数时,采用动态束定。

a.对象指针b.对象名

c.成员名限定d.派生类名

9.在inta=3,*p=&a;中,*p的值是()。

a.变量a的地址值b.无意义

c.变量p的地址值d.3

10.c++类体系中,不能被派生类继承的有()。

a.转换函数b.构造函数

c.虚函数d.静态成员函数

11.假定一个类的构造函数为a(intaa,intbb){a=aa++;b=a*bb++;},则执行ax(4,5);语句后,x.a和x.b的值分别为()。

a.4和5b.5和4

c.4和20d.20和5

12.假定ab为一个类,则执行abx;语句时将自动调用该类的()。

a.有参构造函数b.无参构造函数

c.拷贝构造函数d.赋值构造函数

13.c++语言建立类族是通过()。

a.类的嵌套b.类的继承

c.虚函数d.抽象类

14.执行语句序列ofstreamoutf(“salary.dat”);if(...)cout<<“成功”;elsecout<<“失败”;后,如文件打开成功,显示”成功”,否则显示”失败”.由此可知,上面if语句的条件表达式是()。

a.!

outf或者outf.fail()

b.!

outf或者outf.good()

c.outf或者outf.fail()

d.outf或者outf.good()

15.静态成员函数不能说明为()。

a.整型函数b.浮点函数

c.虚函数d.字符型函数

16.在c++中,数据封装要解决的问题是()。

a.数据规范化排列b.数据高速转换

c.避免数据丢失d.保证数据完整性

17.在c++中有以下4条语句:

staticinthot=200;int&rad=hot;hot=hot+100;cout

c.300d.200

18.如果class类中的所有成员在定义时都没有使用关键字pubilc,private,protected,则所有成员缺省定义为:

()。

a.publicb.protected

c.privated.static

19.c++设置虚基类的目的是()。

a.消除二义性b.简化程序

c.提高运行效率d.减少目标代码

20.实现运行时的多态性用()。

a.重载函数b.构造函数

c.析构函数d.虚函数

二、填空题(每空2分,共20分)

1.派生类可以定义其________中不具备的数据和操作。

2.当建立一个新对象时,程序自动调用________。

3.定义________函数时,应在参数个数或参数类型上有所不同。

4.类是用户定义的类型,具有________称作对象。

5.使用指向对象的指针来标识类的成员,则必须使用的运算符是________。

6.拷贝初始化构造函数使用________来初始化创建中的对象。

7.在一个类中可以对一个操作符进行________重载。

8.在c++中有二种参数传递方式:

________。

9.多态性通过________来实现的。

10.使用空的虚函数可以保证基类到派生类建立起一条________,使派生类通过虚函数机制正确存取虚函数。

三、完成程序题(每小题5分,共20分)

1.在下面程序的底画线处填上适当的字句,使该程序执行结果为10。

#include

classbase{intx;

public:

________∥为x置值

________∥取x值

};

voidmain()

{basetest;

test.init(3);

cout<}

2.在下列程序的底画线处填上适当的字句,完成类中成员函数的定义。

#include

classbox{private∶

intcolor;intupx,upy;intlowx,lowy;

public:

friendintsame-color(linea,boxb);

________set-color(intc){color=c;}

voiddefine-box(intx1,inty1,intx2,inty2){upx=x1;upy=y1;}

};

classline{private:

intcolor;intstartx,starty;intlen;

public:

friend-intsame-color(linea,boxb);

________set-color(intc){color=c;}

voiddefine-line(intx,inty){startx=x;}

};

intsame-color(linea,boxb)

{if(a.color==b.color)

return1;

return0;}

3.在下面程序的底画线处填上适当的字句,完成程序。

#include

classa{

public∶voidf(inti){cout

};

class________{

public∶voidh(){cout<<”h\n”;}

a∶∶f;

};

voidmain()

{bd1;

d1.f(6);

________.h();

}

4.在下列程序的空格处填上适当的字句,使输出为:

0,7,5。

#include

#include

classmagic{

doublex;

public∶

________(doubled=0.00)∶x(fabs(d)){}

magicoperator+(magicc){returnmagic(sqrt(x*x+c.x*c.x));}

friendostream&operator<<(ostream&os,magicc){returnos<};

voidmain()

{

________;

cout<}

四、综合应用题(共20分)

1.分析下列程序可能的输出结果。

(满分8分)

#include

classbase{

public∶

virtualintfunc(){return10;}

};

classderived∶publicbase{

public∶

intfunc(){return200;}

};

voidmain()

{derivedd;

base&b=d;

cout

2.下列shape类是一个表示形状的抽象类,area()为求图形面积的函数,total()则是一个通用的用以求不同形状的图形面积总和的函数。

请从shape类派生三角形类(triangle)、矩形类(rectangle),并给出具体的求面积函数。

给出shape,total的定义如下所示。

(满分12分)

classshape{

public∶

virtualfloatarea()=0

};

floattotal(shape*s[],intn)

{

floatsum=0.0;

for(inti=0;isum+=s[i]->area();

returnsum;

}

面向对象程序设计试题二

一、单项选择题(2×10):

1.假定一个类的构造函数为a(intaa,intbb){a=aa;b=bb;},则执行ax(4,5);语法后,x.a和x.b的值分别为()

a.4和5b.5和4c.4和20d.20和5

2.假定ab为一个类,则执行abx;语句时将自动调用该类的()

a.有参构造函数b.无参构造函数c.拷贝构造函数d.赋值重载函数

3.c++语言建立类族是通过()

a.类的嵌套b.类的继承c.虚函数d.抽象类

4.执行语句序列

ofstreamoutf("salary.dat");if(…)cout<<"成功!

";elsecout<<"失败!

";

后,如果文件打开成功,显示"成功!

",否则显示"失败!

"。

由此可知,上面if语句的……处的表达式是()

a.!

outf或者outf.fail()b.!

outf或者outf.good()c.outf或者outf.good()d.outf或者ouf.fail()

5.静态成员函数不能说明为()

a.整型函数b.浮点函数c.虚函数d.字符型函数

6.在c++中,数据封装要解决的问题是()

a.数据规范化排列b.数据高速转换c.避免数据丢失d.切断了不同模块之间的数据的非法使用

7.在c++中有下列4条语句:

inthot=100;

int&rsd=hot;

hot=hot+100;

cout<执行这4条语句后输出为()

a.0b.100c.200d.300

8.如果class类中的所有成员在定义时都没有使用关键字public、private或protected,则所有成员缺省定义为()

a.publicb.protectedc.privated.static

9.设置虚基类的目的是()

a.消除两义性b.简化程序c.提高运行效率d.减少目标代码

10.实现运行时的多态性用()

a.重载函数b.构造函数c.析构函数d.虚函数

二、填空题(2×10):

11、面向对象程序设计的____________机制提供了重复利用程序资源的一种途径。

12、对虚函数使用基类类型的指针或引用调用,系统使用____________联编;而使用对象调用时,系统使用____________联编。

13、允许访问一个类的所有对象的私有成员、公有成员和保护成员的函数是该类的____________和____________。

14、执行完c++程序中的三天语句:

inta,b,*c=&a;

int*&p=c;

p=&b;

后c指向____________。

15、classx{

public:

inta;

enumbool{false,true};

};

voidfun(x&x)

{

__________=______________________;//将x的a赋值为所定义的布尔值false

}

16、在类定义中,类说明以关键字class开始,其后跟____________,它必须是一个有效的c++标识符。

类说明的内容用花括号括起来,称为____________。

17、实现类对象初始化任务的是该类的____________。

18、初始化类模板时,相对于它的每个参数要提供____________。

19、重载的运算符仍然保持其原来的优先级、结合性和____________。

20、从一个抽象类派生的类必须提供纯虚函数的实现代码,或者在该派生类中将它说明为____________。

三、改错题(2×5):

21、指出下面程序中的错误,在错误处说明出错原因

#include

constfloatpi=3.1416;

constfloatr=3.2;

voidmain(){

floats1,s2,c1,c2,r1;

c1=pi*r*r;

s1=2*pi*r;

r=2.8;

c2=pi*r*r;

s2=2*pi*r;

cout<22、指出下面程序中的错误,在错误处说明出错原因

classa{

public:

a(){func();}

virtualvoidfunc()=0;

};

23、指出下面程序中的错误,并改正

#include

classtest{

private:

staticintx;

public:

virtualstaticintfunc();

};

inttest:

:

x=20;

inttest:

:

func(){

returnx;

}

voidmain(){

cout

cout<}

24、指出下面程序重点错误,在错误处说明出错原因

#include

classa{

private:

inta;

public:

voidseta(intx){a=x;}

voidshowa(){cout<<"a="<};

classb:

privatea{

private:

intb;

public:

voidsetb(intx,inty){b=x;seta(y);}

voidshowb(){showa();cout<<"b="<};

voidmain(){

bobj;

obj.seta(53);obj.showa();

obj.setb(53,58);obj.showb();

}

25、下面程序希望产生的输出为4+3i,但是运行输出是3+3i,请指出错误并改正

#include

classcomplex{

intreal;//实部

intimag;//虚部

public:

complex(intr=0;inti=0):

real(r),imag(i){}

voidshow(){cout

};

voidmain(){

complexo(2,3);

++++c;

c.show();

}

四、完成程序题(4×5):

26、在下面程序的横线处填上适当字句,使该程序执行结果为6。

#include

classbase{

intx;

public:

________________________________________//为x置值

________________________________________//取x值

};

voidmain()

basetest;

test.init(6);

cout<}

27、在下面横线处填上适当字句,完成类中成员函数的定义:

#include

classline;

intx;

classbox{

private:

intcolor;

intupx,upy;

intlowx,lowy;

public:

_____________________intsame_color(linea,boxb);

voidset_color(intc){color=c;}

voiddefine_line(intx,inty){startx=x;}

};

intsame_color(linea,boxb){

if(a.color==b.color)return1;

return0;

}

28、在横线处填上适当字句,完成程序。

#include

classa{

public:

voidf(inti){cout

};

classb:

a{

public:

voidh(){cout<<"h\n";}

_____________________f;

};

voidmain(){

bd1;

d1.f(6);

_____________________.h();

}

29、下面是一个栈的类模板,其中push是把元素i压入栈顶,栈初始为空,top值为0,栈顶元素在stack[top-1]中,在下面横线处填上适当语句,完成栈类模板的定义。

#include

template

clasststack{

enum{size=1000};

tstack[size];

inttop;

public:

tstack(tc)_____________________{

stack[top]=c;

}

voidpush(constt&i){

if(top}

tpop(){

returnstack[top>0?

--top:

top];

}

};

30、

classlocation{

private:

intx,y;

public:

voidinit(intinitx,intinity);

intgetx();

intgety();

};

voidlocation:

:

init(intinitx,intinity){

x=initx;y=inity;

}

intlocation:

:

getx(){

returnx;

}

intlocation:

:

gety(){

returny;

}

#include

voidmain(){

locationa1;

_____________________//定义一个指向a1的指针pa1;

_____________________//用pa1将对象a1的书籍成员x和y分别初始化为6和8

五、程序分析题(5×6):

31、

#include

classa{

int*a;

public:

a(intx){a=newint(x);cout<<"*a="<<*a<};

voidmain(){

ax(3),*p;

p=newa(5);

deletep;

}

32、

#include

template

voidf(t&x,q&y){

if(sizeof(t)>sizeof(q))x=(t)y;

elsey=(q)x;

}

voidmain(){

doubled;

inti;

d=9999;i=88;

f(d,i);

cout<<"d="<

d=88;i=9999;

f(i,d);

cout<<"d="<

}

33、

#include

classbase{

public:

virtualintfunc(){return0;}

};

classderived:

publicbase{

public:

intfunc(){return100;}

};

voidmain(){

derivedd;

base&b=d;

cout<

cout<

:

func()<

}

34、

#include

classtest{

private:

staticintval;

inta;

public:

staticintfunc();

staticvoidsfunc(test&r);

};

inttest:

:

val=20;

inttest:

:

func(){

val+=val;

returnval;

}

voidtest:

:

sfunc(test&r){

r.a=25;

cout<<"result3="<

}

voidmain(){

cout<<"result1="<

:

func()<

testa;

cout<<"result2="<

test:

:

sfunc(a);

}

面向对象程序设计试题三

一、单项选择题(本大题共10小题,每小题2分,共20分)

在每小题列出的四个备选项中只有一个是符合题目要求的,请将其代码

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

当前位置:首页 > 医药卫生 > 预防医学

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

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