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

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

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

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

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.必须使用public

10.类型转换函数()。

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

C.只能带2个参数D.只能带3个参数

二、判断正误题(本大题共6小题,每小题2分,共12分)判断正误,在题后的括号内,正确的划上“√”错误的划上“×”。

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

(1)

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

(2)

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

(2)

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

(2)

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

(1)

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

(1)

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

错填或不填均无分。

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

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

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

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

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

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

四、程序分析题(本大题共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;

}

上面程序的输出结果为:

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

#include

usingnamespacestd;

template

voidPrint(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;

}

上面程序的输出结果为:

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

#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;

}

上面程序的输出结果为:

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

#include

usingnamespacestd;

classCTest

{

public:

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

m_iZ(iZ)

{

m_iX=iX;

m_iY=iY;

}

voidPrint()

{

cout<

cout<

}

voidPrint()const

{

cout<

}

private:

intm_iX,m_iY;

constintm_iZ;

};

intmain()

{

CTestoTest1;

oTest1.Print();

CTestoTest2(1,6,8);

oTest2.Print();

constCTestoTest3(6,0,18);

oTest3.Print();

cout<

return0;

}

上面程序的输出结果为:

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

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

#include//1

usingnamespacestd;//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

//20

//21

intmain()//22

{//23

CTestoTest1,oTest2(8);//24

cout<

//26

return0;//27

}//28

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

#include//1

usingnamespacestd;//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//1

usingnamespacestd;//2

//3

classCTest//4

{//5

public:

//6

CTest(intiVar=0)//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

{//24

public:

//25

CDerive(intiBase=0,intiDerive=0):

CBase(iBase)//26

{//27

m_iDerive=iDerive;//28

}//29

//30

voidShow()//31

{//32

cout<

:

Get()<<","<

}//34

//35

private:

//36

intm_iDerive;//37

};//38

//39

intmain()//40

{//41

CBaseobj(10);//42

obj.Show();//43

return0;//44

}//45

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

1.编写一个函数模板,用于求参数的绝对值,并编写测试程序进行测试。

函数模板声明如下:

template

TypeAbs(TypetVar)

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

C++面向对象程序设计模拟试题一参考答案

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

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

1.B2.A3.A4.C5.C

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.6

3.参考答案:

61822

4.参考答案:

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;

template

TypeAbs(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();

ob

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

当前位置:首页 > 高等教育 > 艺术

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

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