|
谋学网(www.mouxue.com)是国内最专业的奥鹏作业资料,奥鹏离线作业资料及奥鹏毕业论文辅导型网站,主要提供奥鹏中医大、大工、东财、北语、北航、川大、南开等奥鹏作业资料辅导,致力打造中国最专业的远程教育辅导社区。
( v8 X8 q+ M9 H+ ?5 X. h) ^7 h' ]
4 E/ j/ J" I. X: b8 M
一、单选题(共 35 道试题,共 70 分。)V 1. 友元重载运算符obj1>obj2被C++编译器解释为()。
; m4 D* E- e, {$ c, lA. operator>(obj1,obj2)
3 x9 ^' X7 K# R4 W, {B. >(obj1,obj2)
2 {! Q2 d2 N- _0 u1 x5 g- |C. obj1.operator>(obj2)/ U( i9 h3 W, f
D. obj2.operator>(obj1)
% |- _& a: m) o# F; E 满分:2 分0 f9 v, H, M. l& m2 Z2 \
2. 结构化程序设计方法以()为中心进行分析和设计。; L* C8 u5 h+ k5 K
A. 结构
$ `% B( ^ o6 U# I+ V# cB. 模块
7 x, x+ @# x- z' l1 B* v6 c' sC. 对象
7 g# \5 r$ f& X+ F: h/ i M' w) qD. 类
3 A: R8 ]. B0 t 满分:2 分
$ s- `# \, Y9 T, T& S2 y7 [3. 变量的引用,其含义是指该变量的()。: f" ]; P) k$ W; A# h
A. 值
2 d/ w/ `; S% Q. _+ xB. 类型# Z6 d. P" p6 z. I
C. 别名
" G$ |9 i! w; k4 d& CD. 地址
: M. e" E1 D4 X C+ a7 \ 满分:2 分
4 r' V U# }/ j4. 多继承的构造函数顺序可分为如下4步: ①所有非虚基类的构造函数按照它们被继承的顺序构造。 ②所有虚基类的构造函数按照它们被继承的顺序构造。 ③所有子对象的构造函数按照它们声明的顺序构造。 ④派生类自己的构造函数体这四个步骤的正确顺序是()。
/ s" E+ ^ W% b* `A. ④③①②; M Q3 i5 p+ _( v, X
B. ②④③①
$ G" _- R" ?5 z/ g7 RC. ②①③④
' f6 }% v1 e! J! L: P1 D1 bD. ③④①②6 i! D- Y" \8 i& n* \2 b+ s
满分:2 分
: O! J: u. E8 V& I, |5. 在使用类创建对象时,系统会自动调用该对象的()完成对象中数据成员的初始化等操作。
1 n0 J! f- O; e- k/ @/ kA. 友元函数6 ~' h- q U8 a- F
B. 虚函数8 x# H# v$ p, M( r6 K
C. 构造函数; y* j0 }/ M; \9 T. O7 w/ D* I/ }% R
D. 析构函数$ U$ j- b1 d" `- F1 ~
满分:2 分* S1 f# q& N& I5 g3 G. `
6. 在一个string类对象表示的字符串中查找子串,应该使用string类的()函数。
- `2 j+ N' k7 O1 U N% YA. assign
3 c: v% V# O& ~. f! F& K2 SB. insert
2 K3 M5 K: r m% M. D XC. swap
% y4 V! h4 D4 \6 c% oD. find- b* m& w; b9 v. g! W$ ]) M* }
满分:2 分. [0 X2 I! l1 I
7. 类aClass的定义如下: class aClass {public: aClass(){} aClass(int i){value=new int(i);} int *value; } 若要对类中的value赋值,则下面的语句中,正确的是()。
4 j* Y1 z+ H0 z% x. _A. aClass my; my.value=10;
* `" R9 E% J' i. m& CB. aClass my; *my.value=10;; e' V; Y1 J1 j6 U- s
C. aClass my; my.*value=10;
2 d- j; }4 j' E! D5 h$ V% ^" v$ mD. aClass my(10);
' q: r1 |. b0 o( Y 满分:2 分4 M+ O' j+ U( n/ z0 E& M+ G
8. 已知“int a=10,*p;int *&r=p; r=&a;*p=20;cout<<a;”,则输出为()。- D. E0 E" O& D' ]; k
A. 10
2 ]5 M* r4 D" fB. 20
r& A R! u. l- m: I. d" e \C. 不确定值
6 I* R: l* q. l' G9 s2 yD. 程序有错误) } \- k8 N1 q* q
满分:2 分
/ L! U+ s8 u" V. v' z3 n9. 已知“float *p; p=new float[2];”,若分配成功,则指针p在堆中获得的字节数为()。
0 @, z% E: A( K- K1 hA. 2
9 x4 Z' V" E/ X7 x% X2 vB. 4) O; P; l; m, O5 u$ j* S
C. 8) ], z4 N8 W$ K, K& V P7 N
D. 不确定
2 o/ ] b, {( X2 k. @ 满分:2 分* w( P3 @- h. l/ [$ g! t
10. 关于纯虚函数和抽象类的描述中,错误的是()。9 [+ p) Z5 D: G4 t" V7 H1 e" ~
A. 纯虚函数是一种特殊的虚函数,它没有具体的实现。* o9 j* H: L0 l, V' Z4 y
B. 抽象类是指具有纯虚函数的类。
# q& u, Q$ `/ p1 J1 j( nC. 一个基类中有纯虚函数,该类的派生类一定不再是抽象类。
& X F1 i. _3 u: CD. 抽象类作为基类来使用,其纯虚函数的实现由派生类给出。1 m- X& ?9 ^5 A! C! v; A
满分:2 分
4 K+ d: t7 _$ I4 Z& H" e' w: _11. 假设堆内存分配均成功,则下面程序段完全正确的是()。5 t" g1 `% [3 E
A. int *p=new int(3);cout<<*p;delete p;4 s, ~' o: U* R2 {, O
B. int *p=new int[5]={1,2,3,4,5};for(int i=0;i<5;i++)cout<<p;delete []p;
" u' W4 [6 H" w% q* L' c( z: YC. int *p=new int[5];for(int i=0;i<5;i++,p++) {*p=i; cout<<*p;}delete []p;
/ Q) r. {) @& Q6 B% S5 t# O" XD. 以上程序段均正确
5 P; V/ G+ F L! X 满分:2 分9 }9 g8 }3 i5 |) F4 o' w
12. 要在类对象上使用运算符,以下不用必须被重载的运算符是()。2 w; L! n+ q. r- w# E
A. [ ]. a. t; G2 f* u+ G
B. =8 @1 T/ d) k5 Q/ \" t
C. ++5 A" r/ s% z2 q+ [* T
D. --
8 g8 l0 |2 m3 i, ?8 T- K9 s' X 满分:2 分
% \+ R% e0 U9 t: L8 w13. 在公有派生情况下,有关派生类对象和基类对象的关系,下列叙述不正确的是()。
8 _$ I8 |+ w4 I, Y1 S7 nA. 派生类的对象可以直接访问基类的所有成员! M. _0 p! {3 t9 ?/ ?( z% |
B. 派生类的对象可以初始化基类的引用/ ^5 ~+ k# Y1 ?. u
C. 派生类的对象不可以直接访问基类中的私有成员
$ |% | ^* X$ I4 jD. 派生类的对象的地址可以赋给指向基类的指针
& Z3 J9 F$ P. n 满分:2 分
5 H7 E: Z% E7 C6 d, C14. 下列运算符中,()在C++中不能重载。
( u: p5 P9 E: }7 ^5 [& e& VA. ?:8 r+ x* }* |- B, D8 }) t
B. +6 P, x3 U- X, f1 F
C. -
2 R) j* Z) l& Z* w A# sD. <=
: \+ A% V! `- S 满分:2 分2 k0 u4 b" Y% ^+ q2 ~2 e
15. 假定MyClass为一类,执行MyClass a,b(2),*p[2];语句时会自动调用该类构造函数()次。! Z% o. b# z+ C- R: r2 x
A. 2
/ i$ S2 K8 `; e4 v( mB. 3' I4 d2 R" [* u8 p7 z& Y: ^
C. 4 Y* ?: k4 k; V' r6 }9 O; v# i9 E
D. 5
8 l6 K E: g+ N* {# t V0 _ 满分:2 分$ r$ }4 ^: U- b! H& |
16. 类的默认的无参构造函数()。
7 K8 y/ Z w5 H$ T1 S% ]6 aA. 在任何情况下都存在4 [7 ]. H: C$ U) i* M; ^0 t
B. 仅当未定义无参构造函数时存在6 x( _3 J/ X% A: `" G
C. 仅当未定义有参构造函数时存在' z- L0 c: B$ }: |. U) K7 K# v
D. 仅当未定义任何构造函数时存在6 \) k( e4 K/ O6 U( E! s
满分:2 分- i6 P* }7 @* C! }6 M A( L+ B
17. 在C++中,通过()的机制可以对原有的类进行扩充和完善以适应新的需要。0 t& O1 W0 o' q T4 X3 n
A. 继承
7 F5 r1 m- [# y$ ~- eB. 封装% v4 s# G. s% T4 Q6 ~, J; i
C. 多态7 V2 |; [+ e; x2 `1 z, K1 l
D. 重载- h$ f+ y& P& `4 I6 ]
满分:2 分
2 x% R. c5 y' u, H( s7 ^1 ^18. 有如下类声明: class Sample { int x; }; 则Sample类成员x是Sample类的()。$ e, _7 R: w) m' t
A. 公有数据成员
9 z0 ^8 P4 s) H2 `* f8 nB. 保护数据成员
6 y( G2 B1 z# E, u- }- dC. 私有数据成员
; h `- `: V$ S! ^# nD. 以上选项都不正确
8 Z! R% U& n& k4 a 满分:2 分
0 w! a" j6 B) W, Q2 j6 ^19. 运算符重载的目的是()。
- z3 {4 H, p6 `% [3 |. ]6 i# ?A. 提高程序的效率
, n5 N3 G! m6 x! WB. 提高代码复用能力
2 |+ k3 Z& w: K, EC. 简化程序,减少目标代码
( N0 _- g& b. e2 l7 t' m! QD. 使程序代码直观易读4 d. h! [! o9 p+ k2 I% ]. O9 k& `
满分:2 分8 m. V! l7 e9 N5 J
20. 类MyClass的定义如下: class MyClass { public: MyClass() { value = 0;} SetVariable(int i) { value = i; } private: int value; } 则对下列语句序列正确的描述是()。 MyClass *p,my; p=&my;
I& C0 {0 P) h2 a6 D# Q) HA. 语句p=&my;是把对象my赋值给指针变量p$ [3 F! x7 A/ I7 s8 P" ^7 @ }
B. 语句MyClass *p,my;会调用两次类MyClass的构造函数3 J6 ], p, Z. w8 S _1 P7 l( o P- U
C. 对语句 *p.SetVariable(5)的调用是正确的
8 I. b7 Z2 h$ @+ b% H% Q7 MD. 语句p->SetVariable(5)与语句my.SetVariable(5)等价
& F6 F4 B( H# a* |4 E j7 ] 满分:2 分) r, u% O' U# \6 I6 @
21. 程序在调用重载函数时,根据()区分到底要调用哪个函数。, T9 K9 o9 X- h! t
A. 函数名9 O) b y3 e, ~' f( j! B
B. 返回值类型
8 H' A; j, C9 T, Q/ C; WC. 参数个数和类型
7 Y+ V7 ?, W; K; s9 y( s( M9 g8 a6 tD. 以上都可以
( U# H3 y) j, M- }6 G 满分:2 分
8 P2 V$ T+ o* V2 Y6 q# c: B22. “#include <iostream>”是()预处理命令。" o- N' l t# x3 w# K
A. 宏定义
9 S# T* N- j) G. D6 ], H% A" FB. 文件包含% M. R6 a& F! o6 U/ b
C. 条件编译: J4 M% `. C: ~; H9 {/ Y
D. 工程配置
. \6 h5 T0 n" k, H" N- P 满分:2 分( D( g- l- I+ w \4 A
23. 面向对象程序设计方法以()为中心进行分析和设计。% j. Z$ y4 i7 T& r1 Q: `" P
A. 结构
" {! L( D1 y. T5 \* {- aB. 模块6 c# `7 k+ {/ m6 |0 M, u
C. 对象0 `; J' Q+ o+ G* I3 u: b
D. 类/ _9 {( S7 V6 I. Q: h) Y( e
满分:2 分/ m/ f& {' ~, p w
24. 如果一个类至少有一个纯虚函数,那么就称该类是()。
$ w7 `$ P0 g. HA. 抽象类
- ?" P7 a) B; K* HB. 虚基类
# z0 n* E9 _, K* t4 TC. 派生类! w; Y2 y: h( B$ ]7 Z
D. 以上都不对
: o) [& O5 ^- \9 o1 x- m$ e 满分:2 分- X& v5 m" }! s5 }0 ]
25. 已知“float *p; p=new float[2];”,若要释放p所指向的堆中的这些字节,下列语句正确的是()。
* N& z0 ]- i2 L4 z6 @" |5 O" ?9 kA. delete p;
( A& `, k: ?' G4 v+ SB. delete p[];1 E7 m# ^5 p6 a s4 A) A
C. delete []p;5 G8 ^! S5 s$ d# ~8 c
D. delete p[2];
. D6 Y. k8 D6 t7 ] 满分:2 分
9 `- l$ y5 d* {0 |( Y. f26. 下列对派生类的描述中错误的是()。
, G) `& Q/ ]4 tA. 派生类至少有一个基类
8 Q2 C0 ]6 C$ |B. 派生类可作为另一个派生类的基类$ r, h3 Q& I) S4 I- Y6 ] c
C. 派生类除了包含它直接定义的成员外,还包含其基类的成员
: z( R8 H) T/ X0 uD. 派生类对其继承的基类的成员访问权限保持不变- \. ] q9 w+ D# G+ p
满分:2 分
8 G' G) `1 O0 {2 u9 e3 ?27. 若类中有指针成员变量,则应编写(),使得在对象销毁时能够自动调用该函数释放指针成员变量所指向的内存空间。
% {' g" f! y! x; A6 mA. 友元函数7 a4 R+ T+ }0 z# f4 D0 F# v
B. 虚函数6 g U) q' U9 o. O
C. 构造函数. r( x: D) T( e: L; j* f
D. 析构函数0 c( h: }" t2 Q
满分:2 分 p! P8 Z7 O" \) ~# T
28. 对于拷贝构造函数,正确的描述是()。" D6 ?: S- V( n
A. 在C++语言中,如果不自定义类的拷贝构造函数,则每个类都有默认的拷贝构造函数
e3 z; Q' v6 T( Y, @6 {2 JB. 必须为每个类定义拷贝构造函数/ }6 L" e0 u6 V _; o
C. 如果要使用拷贝构造函数,则必须在类中先定义
) F4 p5 |/ N) v$ CD. 当定义了类的构造函数时,如果要使用拷贝构造函数,则必须定义拷贝构造函数
. y$ c' q) }" `1 M 满分:2 分
" y1 H! l( P9 [9 Q5 S29. 交换两个string类对象所表示的字符串的内容,应该使用string类的()函数。
- e. Q7 s! Y9 F' VA. assign1 B8 |! h; Q3 o4 e$ x+ n% V
B. insert
/ x- C0 m3 ?; k% M7 j+ y" j% V9 QC. swap
( Z/ h2 s k% o. TD. find
( s- I! Y8 q4 S# T# F: }2 r8 v 满分:2 分
6 u' K% H& S4 |" V$ `30. 任意一个类,析构函数的个数最多是()。- X4 {- N& @! T1 H
A. 不限个数
0 D; w$ A/ T8 O8 L- g5 Z/ ]+ a: d& VB. 1, k0 q2 S3 C W" ~
C. 28 m- Y* D( c" v! S& L6 V
D. 36 w) j% `. \ h* P2 q
满分:2 分4 Z! @/ I" P( n; Z6 M0 q1 T
31. 下列关于动态联编的描述中,错误的是()。$ [% o6 E/ Z$ k* l9 a
A. 动态联编是以虚函数为基础的
% E" Z8 U/ A9 E$ P0 V8 lB. 动态联编是在运行时确定所调用的函数代码的
9 r) u" ~2 r, R. WC. 动态联编调用函数操作是通过指向对象的指针或对象; w h$ z( }2 |- b% j$ M: r
D. 动态联编是在编译时确定操作函数的6 h! \, _- u6 m4 t' L/ n. x
满分:2 分- x# ?* K" j. I( m
32. 类对象占用内存的大小与()有关。" d# \0 Z+ J n( n2 c
A. 数据成员2 G5 C; J C( F1 a' B
B. 成员函数. |/ D5 V2 B# S) j( Z! ]
C. 数据成员和成员函数) P; ^+ h% l# P' V
D. 私有成员5 Y7 m4 z* A" p1 A5 N* S" J0 m3 z
满分:2 分
3 j$ X) M3 Z+ }3 v. D% e) ~/ x33. 以下为重载函数的一组函数声明的是()。* v1 D# }2 {. B7 o+ X9 Q* z
A. void print(int); void print(double);
% R2 v4 ^+ B. QB. void fun(int); int fun(int);
' |" F- g4 y4 ~( WC. int max(int,int); int min(int,int);
8 K( L5 Y; @& Y; J/ h- |0 |D. void mm(); int mm();
" k' P6 c3 n( K% |' | 满分:2 分
1 R6 |) ?9 o$ m8 H5 q9 ]34. 运行以下程序时,如果由键盘输入65 14,则输出结果是()。 #include <iostream> using namespace std; int main() { int m, n; cout<<"Input m, n:"; cin>>m>>n; while(m!=n) { while(m>n) m-=n; while(n>m) n-=m; } cout<<m<<endl; return 0; }; k" u. q0 Q* q/ Q& J
A. 3
: k$ _4 S% R3 H' U+ r- @B. 2/ T$ I: L% ]4 \( y+ p
C. 1! }4 s; K' z$ a8 f
D. 0) r1 L4 t3 V0 l6 Z/ K
满分:2 分" l8 M4 H! w0 U, a; A5 n- ^+ q
35. 下列关于运算符重载正确的是()。
! [3 l: C$ s0 |/ QA. 运算符重载可以改变运算符的操作数个数, v# {5 J2 K+ |- u2 V+ Y
B. 运算符重载可以改变运算符的优先级% Q( [3 m( [& f1 a0 ^
C. 运算符重载可以改变运算符的结合性; D6 q5 H" t- T% n4 x x
D. 运算符重载不可以改变语法结构
$ ^' `. Y: v$ |8 O 满分:2 分
" S" P( B2 C a0 b9 a- L$ `/ N9 d) C! Y" ]8 u! \7 i
二、判断题(共 15 道试题,共 30 分。)V 1. 私有继承中,对于基类中的所有成员,派生类的成员函数都不可直接访问。
4 z$ z5 {* I4 |A. 错误
4 l( d& Z& W/ F+ rB. 正确& I4 r0 Y+ ~, ^4 v- A i
满分:2 分
: o4 i5 y9 A8 Z& I- a( x6 [9 G2. 抽象类不能定义对象,但可以声明抽象类的指针或引用。
. p( O1 A# h9 D' h* sA. 错误
1 f% ?7 @2 ]5 u6 {' Z- LB. 正确( o) v d( w0 t3 [
满分:2 分
: s% K- M' [+ {0 c3. 类中所提供的成员函数可以直接访问该类的私有成员。
' u1 }4 h. F! k, d& j) hA. 错误
2 p7 r. Y( n( i1 x) c" H* o9 l4 RB. 正确
$ J- r# j4 B u @ 满分:2 分- m6 r! K* {( N) _7 y3 x( U5 \7 K* }
4. 在一个类中声明了某个静态数据成员,并在类外给出其定义和初始化后,若未定义该类的对象,该静态数据成员则不存在。
" F, U/ u/ P1 _' ~- w( \A. 错误3 }8 L6 t2 M4 A4 _8 V S8 z
B. 正确
J: f6 l4 _! [, G 满分:2 分: u, F4 G0 ~6 f5 w3 |% ^
5. 抽象类虽然也是一种数据类型,但它不能建立对象,只能作为基类被其他类继承。
+ [8 a. n0 F6 E9 R. l( B6 qA. 错误
8 C4 T: T- h( W) H. KB. 正确
1 M' E" s8 S# r W 满分:2 分
( w7 J5 `; h: N0 D, ]. X6. 对虚函数的调用,系统都是采用动态联编。
: U, H/ p! D5 F3 c5 G4 qA. 错误* w. w9 R1 M# L" o1 J/ B9 N! g
B. 正确% u! @! y, i. r8 E
满分:2 分$ k. |" A T( B/ G" \+ \
7. C++语言类定义中默认的访问权限是public。
& h) E5 ?1 H0 |# n& VA. 错误# h( M" G5 a$ W9 \. c$ y
B. 正确3 z: i% _ ?3 M4 B3 r0 S
满分:2 分
6 q' I2 j" j4 k8. 定义一个虚基类后,则该虚基类后继类层次中的类都需要调用虚基类的构造函数对虚基类中定义的成员变量进行初始化。
8 }8 b, W! k. O+ c! }A. 错误
; Z8 D& W' i- I, _ t+ iB. 正确
1 f9 ~4 v X7 e- r9 t9 S. y# E, p 满分:2 分
- N) k& R5 w* f& a/ p/ Z, U$ o, n9. 假定要对类AB定义加号操作符重载成员函数,实现两个AB类对象的加法,并返回相加结果,则该成员函数的声明语句为: AB operator+(AB &,AB &);
$ U4 l1 q! b5 y+ NA. 错误
; p' t, {0 h/ m. a8 jB. 正确
% o9 S5 e4 T# m, i @$ x 满分:2 分8 N& h3 ?& o8 Q O
10. 在派生类对象销毁时,系统除了会自动调用派生类的析构函数,还会自动调用基类的析构函数。! A( {9 `, {( H) }* Y# z
A. 错误
- ?. V" `0 g, k/ X dB. 正确, C. n% O' p" t7 l6 B- G. I% B
满分:2 分( @' d9 ^2 Z/ `! E1 n
11. 在派生类构造函数的成员初始化列表中,可以包含基类构造函数的调用。
% O3 K3 I% l7 V6 ZA. 错误
! P F8 B0 @9 zB. 正确2 B# Q1 s! b( E! b
满分:2 分
1 _8 f, q/ T# |. W# E& u12. 基类类型的指针可以指向其派生类对象。
1 e7 p; t" J/ L F2 K: dA. 错误, K" t! ] k5 g- A7 f# `
B. 正确
; h& B. w6 x& X& n 满分:2 分
" v+ _+ r- s, m! M# ]. X13. a为MyClass类对象,“static void SetRate(double r){...}”是MyClass类的静态成员函数,则执行语句“a.SetRate(0.05);”时,SetRate成员函数中的this指针指向对象a的地址。5 K. V5 W% h) H U( N
A. 错误
z( \# ^% |8 h% o0 P' I. L7 DB. 正确
n0 o! }7 Y. P5 M7 b3 A O 满分:2 分
- y- C% Z! v9 U; p14. 在C++中,允许从一个类派生出任意多个类,但不允许某个类同时从多个类派生。2 I' A1 x7 k: M1 I+ ?' `
A. 错误: ]0 I- S3 N4 t$ h9 p+ ^
B. 正确
5 D2 M/ Q7 O. o/ z8 P0 n7 C' I, B 满分:2 分
! a1 Z3 B" y" @15. 在C++中,可以声明虚构造函数和虚析构函数。4 m$ t4 _4 _9 v. w- {4 d4 |
A. 错误; C4 d8 f3 Z+ s" R: _5 @
B. 正确
- x- \8 I Z6 P5 l. P 满分:2 分 ~, R; r! j1 y+ X2 Q" r5 f3 s5 t
4 x$ x0 o: i5 ]4 ]; D
谋学网(www.mouxue.com)是国内最专业的奥鹏作业资料,奥鹏离线作业资料及奥鹏毕业论文辅导型网站,主要提供奥鹏中医大、大工、东财、北语、北航、川大、南开等奥鹏作业资料辅导,致力打造中国最专业的远程教育辅导社区。
: G) ]. {9 V4 h4 t |
|