C++考试试题答案要点.docx

上传人:b****1 文档编号:10557604 上传时间:2023-05-26 格式:DOCX 页数:19 大小:27.34KB
下载 相关 举报
C++考试试题答案要点.docx_第1页
第1页 / 共19页
C++考试试题答案要点.docx_第2页
第2页 / 共19页
C++考试试题答案要点.docx_第3页
第3页 / 共19页
C++考试试题答案要点.docx_第4页
第4页 / 共19页
C++考试试题答案要点.docx_第5页
第5页 / 共19页
C++考试试题答案要点.docx_第6页
第6页 / 共19页
C++考试试题答案要点.docx_第7页
第7页 / 共19页
C++考试试题答案要点.docx_第8页
第8页 / 共19页
C++考试试题答案要点.docx_第9页
第9页 / 共19页
C++考试试题答案要点.docx_第10页
第10页 / 共19页
C++考试试题答案要点.docx_第11页
第11页 / 共19页
C++考试试题答案要点.docx_第12页
第12页 / 共19页
C++考试试题答案要点.docx_第13页
第13页 / 共19页
C++考试试题答案要点.docx_第14页
第14页 / 共19页
C++考试试题答案要点.docx_第15页
第15页 / 共19页
C++考试试题答案要点.docx_第16页
第16页 / 共19页
C++考试试题答案要点.docx_第17页
第17页 / 共19页
C++考试试题答案要点.docx_第18页
第18页 / 共19页
C++考试试题答案要点.docx_第19页
第19页 / 共19页
亲,该文档总共19页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

C++考试试题答案要点.docx

《C++考试试题答案要点.docx》由会员分享,可在线阅读,更多相关《C++考试试题答案要点.docx(19页珍藏版)》请在冰点文库上搜索。

C++考试试题答案要点.docx

C++考试试题答案要点

C++面向对象程序设计考试试题答案

、单项选择题(在每小题的四个备选答案中,选出一个正确的答案,

并将其号码填在题干后的括号内。

每小题1分,共20分)

 

1.

面向对象程序设计将数据与a—在一起,作为一个相互依存、不可

分割的整体来处理。

A.对数据的操作

C.数据隐藏

B.

D.

信息数据抽象

2.

a_A.重载

C.类

不是面向对象系统所包含的要素。

对象继承

B.

D.

 

按照标识符的要求,

A.连接符

C.大小写字母

符号不能组成标识符。

下划线

数字字母

 

4.

已知ch是字符型变量,下面正确的赋值语句是—b

A.ch='123';B.ch=‘\xff'

C.ch='\08D.ch=””;

 

5.

要求通过函数来实现一种不太复杂的功能,并且要求加快执行速度,选用

a

A.内联函数

C.重载函数

B.

D.

递归调用嵌套调用

6.

c

A.析构函数

C.构造函数

的功能是对对象进行初始化。

B.数据成员

D.静态成员函数

7.

在下列关键字中,

A.public

C.protected

用以说明类中公有成员的是—aO

B.private

D.friend

 

 

注:

1•试题字迹务必清晰,书写工整。

2•题间不留空,一般应题卷分开

3•务必用A4纸打印

本题6页,本页为第1页试题编号:

课程名称:

面向对象的技术与方法任课教师:

唐宁九

8.D无返回类型,但又有return语句。

A.虚函数B.内联函数

C.友元函数D.类型转换函数

9.类模板的使用实际上是将类模板实例化成一个具体的A。

A.类B.对象

C.函数D.模板类

10.利用友元函数重载“>>”运算符,第2个参数必须为—C。

A.指针B.对象

C.引用D.无值

11.用成员函数重载二元运算符@则显式调用方式为_G

A.obj1.operator@(obj2)B.operator@(obj1,obj2)

C.obj1.operator@()D.obj1@obj2

12.通常拷贝构造函数的参数是

A.某个对象名

C.某个对象的引用名

C。

B.某个对象的成员名

D.某个对象的指针名

13.已知一个类A,

员:

voidf1(int),voidf2(int)和inta。

A.A*pB.intA:

:

*pc=&A:

:

a

C.voidA:

:

*paD.A*pp

是指向类A成员函数的指针。

假设类有三个公有成

14.用struct定义类,若它的成员缺省段约束符的说明,其成员是成员。

A.私有段

C.特殊段

B.

D.

公有段

保护段

15.下列定义中,

A.int*p[5]

C.(int*)p[5]

_是定义指向数组的指针P。

B.int(*p)[5]

D.int*p[]

16.C++中的类有两种用法:

一种是类的实例化,即生成类的对象,并参与系统的运行;另一种是通过c

A.复用B.

C.继承D.

,派生出新的类。

单继承多继承

17.派生类的对象对它的基类成员中

A.公有继承的公有成员

C.公有继承的保护成员

B.

D.

A是可以访问的。

公有继承的私有成员私有继承的公有成员

18.说明静态成员函数的关键字为,

A.staticB.virtual

C.friendD.void

 

课程名称:

面向对象的技术与方法任课教师:

唐宁九

19.下列运算符中,c_Jl算符在C++中不能重载。

B.+

D.<=

A.?

:

C.-

20.cin是

A.ostream

C.stdin

类的标准对象的引用。

B.istream

D.stdout

二、多项选择题(在每小题的五个备选答案中,选出若干个正确的答

案,并将其号码分别填在题干后的括号内;多选、少选、错选均无分。

每小题2分,共10分)

1.若给出函数声明:

voidf(inta=1,intb=2,intc=3,intd=4);

下面的函数调用合法的有__ABD—。

A.f()B.f(5)C.f(5,6)

D.f(5,6,7)E.f(5,6,7,8)

2.

不能用友元函数重载的运算符有—ABDE___。

A.=B.[]C.+

D.->E.()

3.

对一元运算符进行重载后,正确的显式调用方式有—BD。

A.@aB.operator@(a)C.a@b

D.a.operator@()E.a@

4.

关于构造函数,正确的描述有

A.可以是虚函数B.

D.可以重载E.

BD。

可以有参数C.可以被继承

可以显式调用

5.

C++的模板有

A.运算符

D.类

DE

B.数据

E.函数

模板。

C.类型

三、名词解释

(每小题2分,共8分)

 

 

1.封装性:

封装就是将抽象得到的数据和行为(或功能)相结合,形成一个有机的整体,也就是将数据与操作数据的源代码进行有机的结合,形成类”其中数据和函数都是类的成员。

封装的目的是增强安全性和简化编程,使用者不必了解具体的实现细节,而只是要通过外部接口,一特定的访问权限来使用类的成员。

2.类:

实际上是对某种类型的对象定义变量和方法的原型。

它表示对现实生活中一类具有共同特征的

事物的抽象,是面向对象编程的基础。

3.构造函数:

是一种特殊的方法主要用来在创建对象时初始化对象即为对象成员变量赋初始值,总与new运算符一起使用在创建对象的语句中特别的一个类可以有多个构造函数可根据其参数个数的不同或参数类型的不同来区分它们即构造函数的重载

4.内联函数:

,内联函数(有时称作在线函数或编译时期展开函数)是一种编程语言结构,用来建议编译器对一些特殊函数进行内联扩展(有时称作在线扩展);也就是说建议编译器将指定的函数体插入并取代每一处调用该函数的地方(,从而节省了每次调用函数带来的额外时间开支。

四、判断分析题(判断正误,将正确的划上“2”错误的划上“X”

并简述理由。

每小题3分,共12分)

1.空类就是没有名字的类。

错。

空类是没有任何成员的类

2.引用类型和指针类型作为函数的形式参数时,对调用函数的实际参数的要求是一样的,均是地址。

3.在派生类中,若基类的一个成员在派生类中也把相同名字定义为一个成员,

则不可调整它的访问。

错。

因为基类构造函数的调用顺序是按照派生类定义时的顺序,而内嵌对象构造函数调用顺序应该按照成员在类中声明的顺序.两种都可以控制

4.对象数组在创建时要求构造函数不能有任何参数。

错。

静态数据成员是一个类的多个对象共享的

五、读程序、得结果(每小题5分,共20分)

1.#inelude

classA

{inta;

public:

voidseta(intx){a=x;}

voidshowa(){cout<

classB

{intb;

public:

任课教师:

唐宁九

课程名称:

面向对象的技术与方法

voidsetb(intx){b=x;}

voidshowb(){cout<

}

classC:

publicA,privateB

{intc:

public:

voidsetc(intx,inty,intz){c=z;seta(x);setb(y);}voidshowc(){cout<

};

main()

{Cc;

c.seta

(1);

c.showa();

c.setc(1,2,3);

c.showc();

}

以上程序的执行结果是3。

2.#include

classcsample

{private:

inti;

staticintk;

public:

csampie();

voiddisplay();

};

csampie:

:

csample(){i=0;k++;}

voidcsampie:

:

display(){cout<<”i=”<

:

k=0;

main()

{csamplea,b;

a.display();

b.display();

}

i=0,k=2

l=0,k=2_。

以上程序的执行结果是

3.#ineludeclasssample{intX;

public:

voidsetx(inti){x=i;}intputx(){returnx;}};

main()

课程名称:

面向对象的技术与方法

{sample*p;

sampleA[3];

A[0].setx(5);

A[1].setx(6);

A[2].setx(7);

>putx()<<””;}

for(intj=0;j<3;j++){p=&A[j];cout<

}

以上程序的执行结果是567

4.#include

staticintdys[]={31,28,31,30,31,30,31,31,30,31,30,31};

classdate

{

intmo,da,yr;

public:

date(intm,intd,inty){mo=m,da=d;yr=y;}

date(){}

voiddisp(){cout<

{datedt=*this;

day+=dt.da;

while(day>dys[dt.mo-1])

{day-=days[dt.mo-1];

if(++dt.mo==13){dt.mo=1;dt.yr++;}

}

dt.da=day;

returndt;

}

};

main()

{dated1(2,10,2001),d2;

d2=d1+20;

d2.disp();

}

以上程序的执行结果是3/2/2001。

六、编程题(每小题15分,共30分)

1.用模板设计一个堆栈类,包含判栈、读栈、入栈和出栈功能,要求用成员函数重载“()”实现判栈功能,用友元函数重载“--”实现出栈功能。

重载为出栈?

“<<”?

判栈有判空和判满。

#includeusingnamespacestd;template

classStack

{

private:

intsize;

inttop;

T*space;

public:

Stack(intn);

~Stack()

{

delete[]space;

}voidpush(Tt);

friendostream&operator<<(ostream&out,Stack&st){

while(!

(st.operator()()))

out<

returnout;

}

booloperator()()const

{

returntop==size;

}boolIsfull()const

{

returntop==0;

}

};templateStack:

:

Stack(intsize){

this->size=size;

top=size;

space=newT[size];}templatevoidStack:

:

push(Tt){

if(!

lsfull())

课程名称:

面向对象的技术与方法

space[--top]=t;

}intmain()

{

Stackvint>s(20);可以指定栈的大小

s.push

(1);

s.push

(2);

s.push(3);

s.push(4);

s.push(5);

s.push(6);

cout<

}

这个没问题,如果是重载-改为:

#includeusingnamespacestd;templateclassStack

{

private:

intsize;

inttop;

T*space;

public:

Stack(intn);

~Stack()

{

delete[]space;

}voidpush(Tt);

friendStack&operator-(Stack&st)

{

while(!

(st.operator()()))

cout<

booloperator()()const

{

returntop==size;

}

 

boolIsfull()const

{

returntop==0;

}

 

};

templateStack:

:

Stack(intsize){

this->size=size;

top=size;

space=newT[size];}templatevoidStack:

:

push(Tt){

if(!

lsfull())space[--top]=t;

}intmain()

{

Stacks(20);可以指定栈的大小

s.push

(1);

s.push

(2);

s.push(3);

s.push(4);

s.push(5);

s.push(6);

-S;

}

但是这个在VC下不行,在codeblocks下使用mingw32-g++.exe可以正常编译执行,运行截图:

请参考

、丰4Hy.

2.利用基类、派生类和虚函数的概念编写一个程序计算三角形、矩形和圆形的面积。

#ineludeconstdoublePI=3.1415926;

usingnamespacestd;

stmctPoint

Point()

{

x=y=0;

}

Point(doubleX,doubleY):

x(X),y(Y){};

doublex;

doubley;

};

classshape

public:

virtualdoubleGetArea()=0;//虚函数,纯虚函数,图形不具体的话,无法求面积

virtualvoidPrin1()=0;//虚函数,纯虚函数,图形不具体的话,无法输出面积

};classtrigon:

publicshape

{

public:

trigon(Point&A,Point&B,Point&C):

a(A),b(B),c(C){};

~trigon(){};

doubleGetArea()

{

//自己找公式吧,根据三点计算面积的

area=0;returnarea;

}

voidPrintO

{

cout<<"三角形【("<

("

<

("

<

"<

Private:

trigon(){};

Pointa,b,c;//三角形三个点

doublearea;//面积

};

//矩形类,继承自图形类classrect:

publicshape

{

public:

rect(double&Top,double&Bottom,double&Left,double&Right)

:

top(Top),bottom(Bottom),left(Left),right(Right)

{

//填充四个点的坐标pa.x=Left;

pa.y=Top;

pb.x=Left;

pb.y=Bottom;

pc.x=Right;

pc.y=Top;

pd.x=Right;

pd.y=Bottom;

};

~rect(){};

doubleGetAreaO//计算矩形面积

{

//

return(right-left)*(bottom-top);}

voidPrint(){

cout<<"矩形【("<

("

<

("

<

("

<

"<

private:

rect(){};

Pointpa,pb,pc,pd;//矩形左上、左下、右上、右下四个点坐标

doubletop,bottom,left,right;//矩形上下左右四个线的坐标线

doublearea;//面积

};

//圆形类,继承自图形类classcircle:

publicshape

{

public:

circle(Point&C,double&R)

:

c(C),r(R)

{};

~circle(){};

doubleGetArea(){

//

area=PI*r*r;

returnarea;

}

voidPrint(){

cout<<"圆形【"<

"<

"<

"

<

private:

circle(){};

Pointc;//圆心

doubler;//半径

doublearea;//面积

ntmain(intargc,char*argv[])

doubletop,bottom,left,right,radius;top=2;

bottom=1;

left=1;

radius=2;

radius=5;

PointA(left,bottom),B(left,top),C(radius,top),D(radius,bottom);trigonTrigon(A,B,C);

rectRect(top,bottom,left,right);

circleCircle(A,radius);

shape*pS;pS=&Trigon;pS->Print();pS=&Rect;pS->Print();pS=&Circle;pS->Print();

return0;

}

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

当前位置:首页 > PPT模板 > 商务科技

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2