C++面向对象程序设计模拟试题二.docx

上传人:b****7 文档编号:23951429 上传时间:2023-05-22 格式:DOCX 页数:19 大小:20.40KB
下载 相关 举报
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

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

C++面向对象程序设计模拟试题二.docx

C++面向对象程序设计模拟试题二

C++面向对象程序设计模拟试题二

一、单项选择题

1.说明内联函数的关键字是(A)。

A.inlineB.virtualC.defineD.static

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

A.有参构造函数B.无参构造函数C.拷贝构造函数D.赋值重载函数

3.cin是某个类的标准对象的引用,该类是(B)。

A.ostreamB.istreamC.stdoutD.stdin

4.下面的哪个保留字不能作为函数的返回类型?

(C)A.voidB.intC.newD.lon

5.不能参与重载的运算符是(A)A.类B.函数C.函数模板D.运算符

6.由于数据隐藏的需要,静态数据成员通常被说明为(A)。

A.私有的B.公有的C.保护的D.不可访问的

7.编译时多态性使用什么获得?

(A)A.重载函数B.继承C.虚函数D.B和C

8.拷贝构造函数的参数通常是(C)。

A.无特殊要求B.指向对象的指针C.自已类对象的常引用D.对象

9.C++有几种联编?

(B)A.1种B.2种C.3种D.4种

10.基类和派生类可以分别称为(B)。

A.“大类”和“小类”B.“父类”和“子类”C.“小类”和“大类”D.“子类”和“父类”

二、判断

1.不可以定义抽象类的对象。

Y()

2.内联函数的定义必须出现在第一次调用内联函数之前。

Y()

3.模板函数与函数模板的意义完全相同。

N()

4.只有常成员函数才可以操作常对象。

Y()

5.引用可以不初始化。

N()

6.使用new运算符创建数组时,可以为该数组指定初始值。

N()

三、填空题(本大题共6小题,每小题2分,共12分)不写解答过程,将正确的答案写在每小题的空格内。

错填或不填均无分。

1.设函数max是由函数模板实现的,并且max(3.5,5)和max(3,5)都是正确的函数调用,则此函数模板具有

(2)个类型参数。

2.在C++中,函数重载与虚函数帮助实现了类的(多态)性。

3.由static修饰的数据成员为该类的所有对象(共享)。

4.重载函数在参数类型或参数个数上不同,但(函数名)相同。

5.使用new建立的动态对象在不用时必须用(delete)释放所占用的空间。

6.重载运算符“<<”的函数名为(operator<<)。

四、程序分析题(本大题共4小题,每小题5分,共20分)给出下面各程序的输出结果。

1.阅读下面程序,写出输出结果。

#include

usingnamespacestd;

classCPosition

{

public:

CPosition(intiPositionX=0,intiPositionY=0):

m_iPositionX(iPositionX)

{

m_iPositionY=iPositionY;

}

intGetPositionX()const

{

returnm_iPositionX;

}

intGetPositionY()const

{

returnm_iPositionY;

}

voidSetPositionX(intiPositionX)

{

m_iPositionX=iPositionX;

}

voidSetPositionY(intiPositionY)

{

m_iPositionY=iPositionY;

}

private:

intm_iPositionX;//X坐标

intm_iPositionY;//X坐标

};

intmain(void)

{

CPositionoPostion1;

constCPositionoPostion2(6,8);

cout<

oPostion1.SetPositionX(16);

cout<

oPostion1.SetPositionY(18);

cout<

cout<

cout<

return0;

}

上面程序的输出结果为:

1.参考答案:

0

16

18

6

8

2.阅读下面程序,写出输出结果。

#include

usingnamespacestd;

template

classCTest

{

public:

CTest(Typem_tArray[],intiSize):

m_pArray(m_tArray)

{

m_iSize=iSize;

}

voidPrint()const

{

for(inti=0;i

{

cout<

}

}

private:

Type*m_pArray;

intm_iSize;

};

intmain(void)

{

inta[]={1,0,8};

doubleb[]={1.6,1.8};

CTestoTest1(a,3);

oTest1.Print();

CTestoTest2(b,sizeof(b)/sizeof(double));

oTest2.Print();

cout<

return0;

}

上面程序的输出结果为:

2.参考答案:

1081.61.8

3.阅读下面程序,写出输出结果。

#include

usingnamespacestd;

classCGoods

{

public:

CGoods(intiWeight)

{

m_iWeight=iWeight;

m_iTotalWeight=m_iTotalWeight+iWeight;

}

CGoods(constCGoods&oGood)

{

m_iWeight=oGood.m_iWeight;

m_iTotalWeight=m_iTotalWeight+m_iWeight;

}

~CGoods()

{

m_iTotalWeight=m_iTotalWeight-m_iWeight;

}

voidPrint()const;

staticintGetTotalWeight()

{

returnm_iTotalWeight;

}

private:

intm_iWeight;

staticintm_iTotalWeight;

};

intCGoods:

:

m_iTotalWeight=8;//初始化静态数据成员

voidCGoods:

:

Print()const

{

cout<m_iWeight<<""<m_iTotalWeight<<"";

}

intmain(void)

{

CGoodsoGood1(6);

oGood1.Print();

CGoodsoGood2(oGood1);

oGood2.Print();

cout<

:

GetTotalWeight();

cout<

return0;

}

上面程序的输出结果为:

3.参考答案:

61462020

4.阅读下面程序,写出输出结果。

#include

usingnamespacestd;

template

classCTest

{

public:

CTest(TypetA=0,TypetB=0,TypetC=0):

m_tC(tC)

{

m_tA=tA;

m_tB=tB;

}

voidPrint()

{

cout<

cout<

}

voidPrint()const

{

cout<

}

private:

Typem_tA,m_tB;

constTypem_tC;

};

intmain(void)

{

CTestoTest1;

oTest1.Print();

CTestoTest2(1,9,6);

oTest2.Print();

constCTestoTest3(0,6,1.8);

oTest3.Print();

cout<

return0;

}

上面程序的输出结果为:

4.参考答案:

0

0

1

9

1.8

五、程序改错题

1.下面程序中类的定义中有一处错误,请指出出错的行,说明错误原因,并加以改正。

#include//1

usingnamespacestd;//2

//3

classCArray//4

{//5

public:

//6

voidCArray(intiArray[],intiSize):

m_pArray(iArray),m_iSize(iSize)//7

{//8

}//9

//10

intGetSize()//11

{//12

returnm_iSize;//13

}//14

//16

int&operator[](intiIndex)//17

{//18

returnm_pArray[iIndex-1];//19

}//20

//21

private:

//22

int*m_pArray;//指向一个数组空间//23

intm_iSize;//数组元素个数//24

};//25

//26

//27

intmain(void)//28

{//29

ints[]={3,7,2,1,5};//30

CArrayoArray(s,5);//31

oArray[1]=9;//32

for(inti=1;i<=5;i++)//33

{//34

cout<

}//36

cout<

//38

return0;//39

}//40

1.参考答案:

出错行:

第7行

原因:

构造函数不能有返回值类型

改正:

去掉void

2.下面程序中有错误,请指出出错的行,说明错误原因,并加以改正。

#include//1

usingnamespacestd;//2

//3

classCTest//4

{//5

public:

//6

CTest(intiA=0,intiB=0):

m_iA(iA),m_iB(iB)//7

{//8

}//9

//10

voidPrint()//11

{//12

cout<

}//14

//15

private:

//16

intm_iA,m_iB;//17

};//18

//19

//20

intmain(void)//21

{//22

constCTestoTest(12,16);//23

oTest.Print();//24

cout<

//26

return0;//27

}//28

2.参考答案:

出错行:

第11、23行

原因:

常对象只能调用常成员函数

改正:

将第11行改为:

voidPrint()const//11

将第23行改为:

CTestoTest(12,16);//23

3.下面程序中类的定义中有一处错误,请指出出错的行,说明错误原因,并加以改正。

#include//1

usingnamespacestd;//2

//3

classCInteger//4

{//5

public:

//6

CInteger(intiNum=0)//7

{//8

m_iNum=iNum;//9

}//10

//11

intoperatorint()//12

{//13

returnm_iNum;//14

}//15

//16

voidPrint()const//17

{//18

cout<

}//20

//21

private:

//22

intm_iNum;//23

};//24

//25

intmain(void)//26

{//27

CIntegeroCInteger(168);//28

intiNum;//29

iNum=oCInteger;//30

cout<

//32

return0;//33

}//34

3.参考答案:

出错行:

第12行

原因:

类型转换函数没有返回值类型

改正:

去掉返回值类型int

4.下面程序中有一处错误,请指出出错的行,说明错误原因,并加以改正。

#include//1

usingnamespacestd;//2

//3

classCBase//4

{//5

public:

//6

CBase(intiBase=0):

m_iBase(iBase)//7

{//8

}//10

//11

virtualvoidShow()const=0;//12

//13

intGet()const//14

{//15

returnm_iBase;//16

}//17

//18

private:

//19

intm_iBase;//20

};//21

//22

classCDerive:

publicCBase//23

{//24

public:

//25

CDerive(intiBase=0,intiDerive=0):

CBase(iBase)//26

{//27

m_iDerive=iDerive;//28

}//29

//30

voidShow()const//31

{//32

cout<

:

Get()<<","<

}//34

//35

private:

//36

intm_iDerive;//37

};//38

//39

voidPrint(constCBaseobj)//40

{//41

obj.Show();//42

}//43

//44

intmain(void)//45

{//46

CDeriveobj(10);//47

Print(obj);//48

return0;//49

}//50

4.参考答案:

出错行:

第40行

原因:

抽象类不能用来直接作函数参数,但可使用抽象类的引用作参数。

改正:

将第40行改为:

voidPrint(constCBase&obj)//40

六、编程题(本大题共2个小题,每小题8分,共16分)

1.编写一个函数模板,用于求数组中各元素之和,并编写测试程序进行测试。

函数模板声明如下:

template

TypeSum(TypetArray[],intiSize)

参考程序:

#include

usingnamespacestd;

template

TypeSum(TypetArray[],intiSize)

{

TypetSum=0;

for(inti=0;i

{

tSum=tSum+tArray[i];

}

returntSum;

}

intmain(void)

{

inta[]={1,2,3};

doubleb[]={1.5,2.8,8.9,8};

cout<

cout

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

当前位置:首页 > 经管营销 > 经济市场

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

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