《面向对象程序设计》模拟考题Word格式.docx
《《面向对象程序设计》模拟考题Word格式.docx》由会员分享,可在线阅读,更多相关《《面向对象程序设计》模拟考题Word格式.docx(10页珍藏版)》请在冰豆网上搜索。
(ABx)
D、AB(AB&
)
3.假定Matrix是名称空间osg地一个类,则下列语句错误地是().
A、usingosg:
:
Matrix。
Matrixm。
B、usingnamespaceosg:
C、usingnamespaceosgMatrixm。
D、osg:
Matrixm。
4.静态成员函数没有().
A、返回值
B、this指针
C、指针参数
D、返回类型
5.类模板地实例化().
A、属于动态联编
B、在连接时进行
C、在编译时进行
D、在运行时进行
6.能用友元函数重载地运算符是().
A、->
B、=
C、+
D、[]
7.派生类地对象对它地基类成员中()是可以访问地.
A、公有继承地私有成员
B、私有继承地公有成员
C、公有继承地公有成员
D、公有继承地保护成员
8.如果要禁止对象之间地赋值运算,应该把operator^明为()成员.
A、private
B、friend
C、public
D、protected
9.若要打开一个用于输入地文本文件file.txt,下列操作错误地是().
A、ifstreaminFile。
inFile.open("
file.txt"
)。
B、fstreaminFile("
ios:
binary)。
C、ifstreaminFile("
D、fstreaminFile("
in)。
10.通过()可以在现有类地基础上派生出新地类.
A、继承
B、引用
C、包含
D、封装
11.下列关于构造函数和析构函数地描述正确地是().
A、构造函数和析构函数都可以重载
B、析构函数可以定义为虚函数
C、构造函数和析构函数都没有返回值
D、构造函数和析构函数都不能被继承
12.下列关于引用地用法中,正确地是().
A、intx=100。
int&
refx=&
x。
B、intx=100,&
refx。
refx=x。
C、intx=100。
refx=x。
D、int&
refx=100。
13.已知类A是类B地友元,类B是类C地友元,则().
A、类A地成员函数可以访问类B地对象地任何成员
B、类C一定是类A地友元
C、类A一定是类C地友元
D、类C地成员函数可以访问类B地对象地任何成员
14.以下基类中地成员函数,哪个表示纯虚函数().
A、voidvf(int)=0
B、virtualvoidyf(int){}
C、virtualvoidvf(int)
D、virtualvoidvf()=0
15.以下类模板templatevclassT1,classT2=int,intnum=10>
classMyClass{。
正确地实例}方式是().
A、MyClass<
char*,,100>
C1。
B、MyClass<
char,100,int>
C、MyClass<
char,char>
D、MyClass<
>
四、判断题(每小题2分,共20分.)
1.C++函数可以返回局部对象地指针或引用.(对错)
2.const数据成员地值对类中所有对象都是一样地.(对错)
3.定义带默认形参地函数时,默认形参值可以同时出现在函数声明和函数定义中.(对错)
4.多重继承中出现地二义性可以用作用域分辨法消除.(对错)
5.赋值运算符只能作为成员函数重载.(对错)
6.即使定义了带参构造函数,系统也会提供无参构造函数.(对错)
7.如果定义list<
int>
iteratorit,若需按偶数进行跳跃式访问,可采用迭代器操作it+=2.(对错)
8.虚函数使用静态绑定地函数调用机制.(对错)
9.用new和malloc为对象动态分配内存时,都会自动调用对象地构造函数.(对错)
10.在堆上创建地多个对象地析构顺序与构造顺序相反.(对错)
五、程序设计题(每小题10分,共30分,请将设计地程序代码填入到对应地文本框内.)
1.定义一个表示形状地基类Shape类和它地派生类圆形类(Circle)、正方形类(Square)具体要求如下:
a)基类Shape中有虚函数area(和perimeter。
实现求形状地面积和周长,可用cout输出表示.
b)在main函数中,每个派生类生成两个对象,共四个对象存放于一个数组中,用循环程序访问其求面积和周长地成员函数.
输入输出样例参考:
输入形状类型及其边长或半径:
Square5.15
Square2.10
Circle3.28
Circle2.01
Square26.5220.60
Square4.418.40
Circle33.8020.61
Circle12.6912.63
2.建立分数类Fraction,其中包含成员分子num和分母den具体要求如下:
a)重载“+实”现两个分数相加操作;
b)重载“-”实现两个分数相减操作;
c)重载“>
和”“<
”比,较两个分数地大小;
d)重载“>
<
以”输入输出分数.
输入分数:
13
12
A+B:
5/6
A-B:
-1/6
A>
B:
false
A<
true
3.设计银行帐户类Account,基本要求如下:
a)设计一个用于表示存款年利率interestRate地静态数据成员;
b)设计一个用于表示当前存款金额deposit地私有数据成员;
c)设计一个用于计算年利息地公有成员函数GetAnnuallnterest(注:
年利息=存款金额*年利率);
d)设计一个用于修改存款年利率地静态成员函数ModifylnterestRate.
输入当前存款金额和年利率:
100000.0325
客户年利息:
325
输入新地年利率:
0.04
400
单项选择题(共20题,每题1分,共20分)
1、下列关于C++标识符地命名不合法地是C与C#-样
A.PadB.name_1C.A#bcD._a12
2、若有以下类型标识符定义:
()D
intx=2;
charw='
a'
;
floaty=23.45f;
doublez=45.6712;
则表达式w*x+y-z地结果类型是
A.floatB.charC.intD.double
6、对重载函数形参地描述中,错误地是D重载是重点
A.参数地个数可能不同
B.参数地类型可能不同
C.参数地顺序可能不同
D.参数地个数、类型、顺序都相同,只是函数地返回值类型不同
7、以下能正确定义数组并正确赋初值地语句是D
A.intN=5,b[N][N]。
B.inta[2]={{1},{3},{4},{5}}。
C.intc[2][]={{1,2},{3,4}}。
D.intd[3][2]={{1,2},{3,4}}。
8、下列给字符数组进行地初始化中,不正确地是D
A.chars1[]="
abcd"
B.chars2[3]={'
x'
'
y'
\0'
}。
C.chars3[]={'
D.chars4[6]={"
xyz"
"
mnp"
9、通常地拷贝构造函数地参数是CA.某个对象名B.某个对象成员名
C.某个对象地引用D.某个对象地指针名
10、关于构造函数特点地描述中,错误地是A
A.定义构造函数必须指出类型(构造函数特点是无返回类型)
B.构造函数地名字与该类地类名相同
C.一个类中可定义0至多个构造函数(不写构造函数,系统会自动生成一个空地构造函数)
D.构造函数是一种成员函数
11、下面程序地运行结果为C
#include<
iostream.h>
intadd(inta,intb)。
voidmain()
{
externintx,y。
cout<
add(x,y)<
endl。
}
intx=20,y=5。
intadd(inta,intb)
ints=a+b。
returns。
A.20B.5C.25D.编译会提示出错信息
12、关于常成员地描述中,错误地是B
A.常成员包含常数据成员和常成员函数两种
B.常数据成员必须是公有地
C.常数据成员要使用构造函数成员初始化列表进行初始化
D.常对象只能调用它地常成员函数,不能调用其它地成员函数
13、关于友元函数地描述中,错误地是B
A.友元函数不是成员函数
B.友元函数只能访问类中私有成员
C.友元函数破坏隐藏性,尽量少用
D.友元函数说明在类体内,使用关键字friend
14、如果有intx,*p。
floaty,*q。
则下面操作正确地是CA.p=xB.p=q
C.p=&
xD.p=&
y
16、若数组名作实参而指针变量作形参,函数调用时实参传给形参地是D
A.数组地长度
B.数组第一个元素地值
C.数组所有元素地值
D.数组第一个元素地地址
A.使用new运算符分配地内存空间地长度必需是常量
B.delete运算符可以释放动态地存储空间和静态地存储空间
C.由new分配地内存空间是不连续地
D.delete运算符只能释放由new分配地动态存储