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

上传人:b****5 文档编号:7432607 上传时间:2023-01-23 格式:DOCX 页数:14 大小:18.34KB
下载 相关 举报
C++面向对象程序设计模拟试题一.docx_第1页
第1页 / 共14页
C++面向对象程序设计模拟试题一.docx_第2页
第2页 / 共14页
C++面向对象程序设计模拟试题一.docx_第3页
第3页 / 共14页
C++面向对象程序设计模拟试题一.docx_第4页
第4页 / 共14页
C++面向对象程序设计模拟试题一.docx_第5页
第5页 / 共14页
点击查看更多>>
下载资源
资源描述

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

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

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

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

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

一、单项选择题(本大题共10小题,每小题2分,共20分)在每小题列出的四个备选项中,只有一个是符合题目要求的,请将其代码填写在题后的括号内。

错选、多选或未选均无分。

1(说明虚函数的关键字是()。

A.inlineB.virtualC.defineD.static

2(在每个C++程序中都必须包含有这样一个函数,该函数的函数名为()。

A.mainB.MAINC.nameD.

function

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

A.ostreamB.istreamC.stdoutD.stdin

4(如果在类外有函数调用CPoint:

:

func();则函数func()是类CPoint的()。

A.私有静态成员函数B.公有非静态成员函数

C.公有静态成员函数B.友元函数

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

()。

A.publicB.protectedC.privateD(static

6(一个类的所有对象共享的是()。

A.私有数据成员B.公有数据成员

C.保护数据成员D.静态数据成员7(动态联编所支持的多态性称为()。

A.虚函数B.继承

C.编译时多态性D.运行时多态性8(定义类模板时要使用关键字()。

A.constB.newC.deleteD.template

9(对虚基类的定义()。

A.不需要使用虚函数B.必须使用虚函数

C.必须使用privateD.必须使用public10(类型转换函数()。

A.不能带有参数B.只能带一个参数

C.只能带2个参数D.只能带3个参数二、判断正误题(本大题共6小题,每小题2分,共12分)判断正误,在题后的括号内,正确的划上“?

”错误的划上“×”。

1(虚函数在基类和派生类之间定义,且要求函数原型完全一致。

(?

2(抽象类可以用来直接创建对象。

(×)

3(内联函数中可以出现递归语句。

(×)

4(模板类与类模板的意义完全相同。

(×)

5(常对象只能调用常成员函数。

(?

6(重载函数要求函数有相同的函数名,但具有不同的参数序列。

(?

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

错填或不填均无分。

1(在用C++进行程序设计时,最好用(new)代替malloc。

2(函数模板中紧随template之后尖括号内的类型参数都要寇以保留字(class或typename)。

3(编译时多态性可以用(重载)函数实现。

4(拷贝构造函数用它所在类的(对象)作为参数。

5(用关键字static修饰的类的成员称为(静态)成员。

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

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

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

#include

usingnamespacestd;

classCArray

{public:

CArray(intiArray[],intiSize):

m_pArray(iArray),

m_iSize(iSize)

{

}

intGetSize()

{returnm_iSize;

}

int&operator[](intiIndex)

{

returnm_pArray[iIndex-1];

}

private:

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

intm_iSize;//数组元素个数

};

intmain()

{

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

CArrayoArray(s,5);

oArray[1]=9;

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

{

cout<

}

cout<

return0;

}

上面程序的输出结果为:

97215

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

#include

usingnamespacestd;templatevoidPrint(Typea[],intn){

for(inti=0;i

{cout<

intmain()

{inta[]={5,6,8};

doubleb[]={6.8,9.6};

Print(a,sizeof(a)/sizeof(int));

Print(b,2);

cout<

return0;

}

上面程序的输出结果为:

5686.89.63(阅读下面程序,写出输出结果。

#include

usingnamespacestd;classCTest

{public:

CTest(intiVar):

m_iVar(iVar)

{m_iCount++;}

~CTest(){}

voidPrint()const;

staticintGetCount()

{returnm_iCount;}private:

intm_iVar;

staticintm_iCount;};

intCTest:

:

m_iCount=0;voidCTest:

:

Print()const{cout<m_iVar<<""<m_iCount<<"";}

intmain()

{CTestoTest1(6);

oTest1.Print();

CTestoTest2(8);

oTest2.Print();

cout<

:

GetCount();

cout<

return0;

}

上面程序的输出结果为:

61822

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

#includeusingnamespacestd;classCTest

{public:

CTest(intiX=0,intiY=0,intiZ=0):

m_iZ(iZ)

{m_iX=iX;

m_iY=iY;}

voidPrint()

{cout<

cout<

voidPrint()const

{cout<

intm_iX,m_iY;

constintm_iZ;

};

intmain()

{CTestoTest1;

oTest1.Print();

CTestoTest2(1,6,8);

oTest2.Print();

constCTestoTest3(6,0,18);

oTest3.Print();

cout<

return0;}

上面程序的输出结果为:

0

0

1

6

18

五、程序改错题(本大题共4小题,每小题5分,共20分)指出下面程序中的错误,说明错误原因,并加以改正。

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

#include//1usingnamespacestd;//2

//3

classCTest//4{//5

public:

//6

CTest(intiVar=0):

m_iArr(iVar)//7

{//8

cout<<"构造函数:

"<

}//10

//11

void~CTest()【析构函数不能有返回值类型】

//12

{//13

cout<<"析造函数:

"<

}//15

//16

private:

//17

intm_iArr;//18};//19

//2

//21

intmain()//22{//23

CTestoTest1,oTest2(8);//24

cout<

//26

return0;//27

}//28

2(下面程序中类的定义中有一处错误,请指出出错的行,

说明错误原因,并加以改正。

#include//1usingnamespacestd;//2

//3

classCTest//4{//5

public:

//6

CTest(intiA=0,intiB):

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

{【带缺省的参数应放在参数表的尾部,气候不允许

又不带缺省的参数】

//8

}//9

//10

voidShow()//11

{//12

cout<

}//14

//15

private:

//16

intm_iA,m_iB;//17

};//18

//19

//20

intmain()//21{//22

CTestoTest(12,16);//23

oTest.Show();//24

cout<

//26

return0;//27}//28

3(下面程序中类的定义中有一处错误,请指出出错的行,

说明错误原因,并加以改正。

#include//1usingnamespacestd;//2

//3

classCTest//4{//5

public:

//6

CTest(intiVar=0)//【CTest(intiVar=0):

m_iVar(iVar)】

//7

{//8

m_iVar=iVar(删掉)

//9

}//10

//11

voidPrint()const//12

{//13

cout<

}//15

//16

private:

//17

constintm_iVar;//18};//19

//20

//21

intmain()//22{//23

constCTestoTest(16);//24

oTest.Print();//25

cout<

//27

return0;//28}//29

4(下面程序中有一处错误,请指出出错的行,说明错误原

因,并加以改正。

#include

//1

usingnamespacestd;

//2

//3

classCBase

//4

{//5

public:

//6

CBase(intiBase=0):

m_iBase(iBase)

//7

{//8

}//10

//11

virtualvoidShow(,)=0;

//12

//13

intGet()const

//14

{//15

returnm_iBase;

//16

}//17

//18

private:

//19

intm_iBase;

//20

};//21

//22

classCDerive:

publicCBase

//23

{//24public:

//25

CDerive(intiBase=0,intiDerive=0):

CBase(iBase)

//26

{//27

m_iDerive=iDerive;

//28

}//29

//30

voidShow()

//31

{//32

cout<

:

Get()<<","<

//33

}//34

//35private:

//36

intm_iDerive;

//37

};//38

//39intmain()

//40

{//41

CBaseobj(10);//CDeriveobj(10)

//42

obj.Show();

//43

return0;

//44

}//45

六、编程题(本大题共2个小题,每小题8分,共16分)1(编写一个函数模板,用于求参数的绝对值,并编写测试程序进行测试。

函数模板声明如下:

templateTypeAbs(TypetVar)

2(定义一个复数类CComplex,定义带有2个参数(其中一个为缺省参数)的构造函数,显示复数值的函数Show(),重载“+”运算符(用成员函数实现),并编写测试程序进行测试。

C++面向对象程序设计模拟试题一参考答案一、单项选择题(本大题共10小题,每小题2分,共20分)在每小题列出的四个备选项中,只有一个是符合题目要求的,请将其代码填写在题后的括号内。

错选、多选或未选均无分。

A3(A4(C5(C1(B2(

6(D7(D8(D9(A10(A二、判断正误题(本大题共6小题,每小题2分,共12分)判断正误,在题后的括号内,正确的划上“?

”错误的划上“×”。

1(参考答案:

?

2(参考答案:

×

3(参考答案:

×

4(参考答案:

×

5(参考答案:

?

6(参考答案:

?

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

错填或不填均无分。

1(参考答案:

new

2(参考答案:

class或typename

3(参考答案:

重载

4(参考答案:

对象

5(参考答案:

静态

6(参考答案:

operator+

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

1(参考答案:

97215

2(参考答案:

5686.89.63(参考答案:

618224(参考答案:

0

0

1

6

18

五、程序改错题(本大题共4小题,每小题5分,共20分)指出下面程序中的错误,说明错误原因,并加以改正。

1(参考答案:

出错行:

第12行

原因:

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

改正:

去掉void

2(参考答案:

出错行:

第7行

原因:

带缺省值的参数应放在参数表的尾部,其后不允许出

现不带缺省值的参数

改正:

CTest(intiA=0,intiB=0):

m_iA(iA),m_iB(iB)

//7

CTest(intiA,intiB=0):

m_iA(iA),m_iB(iB)

//7

CTest(intiA,intiB):

m_iA(iA),m_iB(iB)

//7

3(参考答案:

出错行:

第9行

原因:

常数据成员只能通过初始化表方式进行初始化。

改正:

去掉第9行,在第7行后加初始化表,即第9行改为:

CTest(intiVar=0):

m_iVar(iVar)

//7

4(参考答案:

出错行:

第42行

原因:

抽象类不能用来直接创建对象。

改正:

将第42行改为:

CDeriveobj(10);

//42

六、编程题(本大题共2个小题,每小题8分,共16分)1(参考程序:

#include

usingnamespacestd;

templateTypeAbs(TypetVar)

{if(tVar>=0)returntVar;

elsereturn-tVar;

}

intmain()

{cout<

cout<

cout<

cout<

return0;

}

2(参考程序:

#include

usingnamespacestd;

classCComplex

{public:

CComplex(doubledReal,doubledImage=0)

{m_dReal=dReal;

m_dImage=dImage;}

voidShow()

{cout<

if(m_dImage>0)

{cout<<"+"<

elseif(m_dImage<0)

{cout<<"-"<<-m_dImage<<"i"<

}

CComplexoperator+(constCComplex&obj)

{CComplexobjTemp(m_dReal+obj.m_dReal,m_dImage+

obj.m_dImage);

returnobjTemp;}

private:

doublem_dReal,m_dImage;

};

intmain()

{CComplexobj1(2,6),obj2(3,8),obj3(0);

obj1.Show();

obj2.Show();

obj3.Show();

obj3=obj1+obj2;

obj3.Show();

return0;

}

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

当前位置:首页 > 农林牧渔 > 林学

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

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