|
一、单选题(共 20 道试题,共 40 分。) V 1. 下列函数中,可以是虚函数的是______。( ): v1 T7 [" M3 a) u" g; U
A. 自定义的构造函数8 @8 o) P( H! `" |' b1 C
B. 拷贝构造函数9 l" e. j6 u0 {0 H @) I7 G
C. 静态成员函数2 k, g- `' S" \; V' H
D. 析构函数
0 b6 A2 W5 @7 ?) l( g, \/ f
+ m/ V1 i# ?& w2 J# g% w3 f2. 考虑函数原型voidtest(inta,intb=7,char="*"),下面的函数调用中,属于不合法调用的是()。$ i8 U- G% `8 L$ j u3 J! S) N. r. R
A. test(5);& l4 I2 o0 O# R; _) t
B. test(5,8);& u n% _1 [$ r& D' x# o* F
C. test(6,"#")3 k, f- Z1 t( a3 D7 O* l9 Z3 q
D. test(0,0,"*")
; B7 U2 z7 h, O9 G4 O: N* z- F \+ I7 J7 K& }$ p
3. 假定a为一个整型数组名,则元素a[4]的字节地址为()。
* T( m8 r/ C$ G4 f" f7 K0 v S ]A. a+4: |$ U# N: I- f/ _
B. a+8
: x( F* s( E0 V% qC. a+16& Z) v' J2 V" n' |0 w7 n- @
D. a+32
% g. H# c3 V5 T2 l% n& X# g" e4 L O' J, n+ K
4. 决定C++语言中函数的返回值类型的是()。1 P2 ?3 }$ l: z. T* ~3 i- R
A. return语句中的表达式类型
; G3 \- H* a7 Z: T5 ^8 x, _B. 调用该函数时系统随机产生的类型
" m" J j7 Q: p* N' }+ z$ }& sC. 调用该函数时的主调用函数类型" c. @# H" u B' o" p6 u
D. 在定义该函数时所指定的数据类型8 Z1 E _: _: _7 u
8 @9 l6 b% S3 X# C. H: y' f% B% X
5. ()的功能是对对象进行初始化。" \/ F5 X' m8 f k9 `$ d
A. 析构函数. k7 l6 H' _) |" `
B. 数据成员6 {# R* h6 H6 y- d1 i5 ]
C. 构造函数
& M( q5 H' \( G0 y( d- T5 W7 o. ?D. 静态成员函数' P/ U& ]( U- s$ f: y# d
) a* L3 T* f# n8 \$ [
6. 设a=1,b=2,则(a++)+b与a+++b这两个表达式的值分别为()。
- f6 o* N+ x# i, G% F$ i: jA. 3,3
% Z9 k8 w% b6 m, v/ a9 IB. 3,4) P; t" h, T, j3 v- V2 q2 c" M
C. 4,3
% n' {9 w- B' h1 _1 aD. 4,4
- o; S, w0 ], m; A! `+ D! e) n( U. m( n3 S0 B9 L
7. 整型变量i定义后赋初值的结果是()。 inti=2.8*6;
; Y8 Y7 S& S1 ~7 T& k) h' m& ~6 ZA. 12! y! l3 b7 |0 V. F6 x
B. 16
m' n# P$ P [; M/ ~5 @; ]C. 17
, [& E( z0 E' a$ N$ C8 f! |D. 18
0 D* }! ], q4 V$ G
2 d: Q: Z3 [$ f8 \* d8. 能做为C++程序基本单位的是( )
" F0 H6 k- h) x3 MA. 字符;
$ y% I6 i4 A; c. B; r3 Z4 K+ Z7 pB. 语句;$ e j0 j; v: ^& w# K
C. 函数;6 {7 Z s/ r5 z
D. 源文件;+ o2 j( h" X/ z) d# |' C& B2 ^4 X4 a
; F" l& l6 v0 q# _0 K9 B
9. 下面有关重载函数的说法中正确的是()。* u. I. R9 w) h' {3 H
A. 重载函数必须具有不同的返回值类型;
$ l5 L1 D/ k1 ~! m4 d0 `& I! FB. 重载函数形参个数必须不同;- b% @7 O/ ^) i3 X5 w' |. @' h+ T+ Z
C. 重载函数必须有不同的形参列表
; Q0 c5 z1 ~/ v d) i) b1 XD. 重载函数名可以不同' W( A' C( g* e6 D3 L
# o7 Q+ A$ x7 r1 K# ?10. 3 K* u( ]. }1 d r& ?- W
对类成员访问权限的控制,是通过设置成员的访问控制属性实现的,下列不是访问控制属性的是
( v& q- y' Z" f7 [_________。
; i3 {. L$ q4 F, P/ ~A. 公有类型
4 K' K: ^; w) B1 Q" c" nB. 私有类型. \' k2 r9 @% k$ k2 d9 L% g
C. 保护类型3 B" Y6 x2 P+ j8 ]
D. 友元类型! U1 d" Y$ c" E9 S; _
5 y, z1 k& N/ s11. - N+ C4 X' G. o: v& k* C
下列程序的运行结果是_________。3 J* H0 t. Q) L+ V9 i
#include
! i- R! J$ t4 z class example5 @, F1 l9 ]0 S, T$ O9 H
{
3 T( u. Z* Y1 @+ n" T8 c# V int a:: Y" E: x. F3 j' T0 P0 p) @" X
public:
# k5 R# X2 d1 x; A1 n. U$ \ example(int b){a=n++;}- o& o8 @( D" A& f4 E$ |& E
void print(){a=a+1;cout < < a < <” ”;}( B `6 c! g' p# W3 L$ A+ s5 p
void print()const{cout< }0 U' u# S* t! [0 m, D
void main()
) Y- x9 n9 c5 D" \+ ?$ c7 y {
' R' C0 Q8 p4 L1 e& s example x t(3);- b9 H2 _$ S% s! _5 t
const example y(2);
_ v- ^7 e. o7 E2 Z' U x.print();
3 E8 W* _9 H# U* x# ` y.print();* |- b3 M/ ^$ d* O& e L
}% n" T( W" C/ V! t# s
A. 2 2
: O, u0 n# E. _& a( G# AB. 4 3
. T. {' B9 ? [9 @* \' KC. 4 28 W6 Y- ^% U* c2 s- M
D. 3! l+ x6 e, S/ V3 U F2 }# ]
6 |* } c3 \8 V8 Q$ y$ q5 {
12. 类的析构函数的作用是()。- B* ]4 ? h; `7 E I
A. 一般成员函数的初始化
! a% a! o5 x0 V% s, CB. 类的初始化- Y8 g; U, X- l- I) H5 {7 m
C. 对象的初始化
5 K" w- d" O! z( _% T! d3 X; f( RD. 删除类创建的对象
7 [1 e/ @& \; \7 g% G4 ~6 [" j# F2 }* ~' P: C8 P1 _" y& n: _& T
13. 如果a=1,b=2,c=3,d=4,则条件表达式“a>b?a:c<d?c:d ” 的值为( )9 r* b, e6 M5 R, P) w; ?9 l
A. 28 G& j: N& ]( @% w3 w6 U% W& V
B. 3
5 I! j0 n$ B& E+ Y. @( JC. 1# @! x0 W: C* X) i% y
D. 4. M: W9 D( R9 I
: ]7 P) @. L- K1 E
14. 对类的构造函数和析构函数描述正确的是()。
/ k* k7 p: g) r1 O% H7 }A. 构造函数可以重载,析构函数不能重载
1 u7 O+ E& V& C: @/ YB. 构造函数不能重载,析构函数可以重载- {+ ?' w$ G+ h+ \" y
C. 构造函数可以重载,析构函数也可以重载2 Q) S! d5 |8 d5 o5 I. P8 @4 F
D. 构造函数不能重载,析构函数也不能重载9 g# |/ {8 s8 b3 u* _: q) i
- h- p$ Q% p/ M" x0 g5 O' `
15. 表示在输出时显示小数位,和在文件输入时判断文件尾的函数分别是()。
5 Y* L5 P3 c0 K. a0 k, V* L9 MA. showbase()和eof()1 b: _+ ~# c) ]$ s; k: F. h, r
B. showpoint()和eof()
/ _. J% C# U3 o) b3 IC. showpoint()和bad()
) o! @/ G2 g( R8 A2 o2 K' k' ^" k6 WD. showpoint()和good()# E0 {& V7 m9 H9 `6 z
! q# z$ V4 F! t3 u# o16. 下列哪个是C++语言的有效标识符?. U9 e0 X1 k1 q9 A/ M
A. _No1
) }2 r1 Y- Z; O9 T+ z/ PB. No.11 ]+ f) o7 t, U& r6 W6 D6 B+ h9 n
C. 12345
$ E' I2 T$ J% {& D; ID. int9 t. G+ [2 d* |% p/ d" V& y3 p: W
+ ~& c- z9 r7 a$ {/ T
17. 下列do-while循环的循环次数是: 已知:int i=5 do{ cout<<i--<<endl i-- }while (i!=0)* k' m* c$ S. @' D
A. 0
' g% Y9 @- f5 Q8 CB. 2- Q* K U3 Y* \( Y
C. 5
5 S' l$ A4 b' r" w. h! k9 k, @D. 无限次
3 v2 f" F5 o7 F1 ^3 P7 Y
% s8 ?0 Y! V6 c* C H2 p; Q; S9 \9 u18. 下面有关重载函数的说法中正确的是( )
: Y! o( E& W8 s( c5 dA. 重载函数必须具有不同的返回值类型2 n; e2 F3 Y# y& Z
B. 重载函数形参个数必须不同
9 V5 z8 m- k0 ?3 T5 GC. 重载函数必须有不同的形参列表
% x) ]/ G7 L) \; p2 a8 TD. 重载函数名可以不同
7 {/ m0 ]) w4 n& I
" z" f: l/ v1 ^- M19.
; ~2 K- H0 b, v7 y下列程序段循环次数是()。intx=-10; while(++x) cout<<x<<endl;7 m, v9 m# i- w i& L
A. 9 k7 Z$ I6 M3 q9 o2 g
B. 10
& l$ L- k; W8 _3 O: i7 N# \C. 11
5 O x, j3 s3 t( F, s! vD. 无限& r0 k7 n/ ?' E7 ~+ b+ D& M) ?
1 F$ Z5 t9 g' y1 N& W20. 下面关于数组的描述错误的是()。
8 P0 y. v1 b3 A6 `& j/ l2 RA. 在C++语言中数组的名字就是指向该数组第一个元素的指针
/ `4 l. b: ^+ z8 E2 ? AB. 长度为n的数组,下标的范围是0-n-1" y, I) [4 W) ~2 Q8 N3 V1 R$ K
C. 数组的大小必须在编译时确定
; t9 r3 P; B% r5 C9 |D. 数组只能通过值参数和引用参数两种方式传递给函数/ @: b. f3 C# U0 X
9 s& f% \4 ] E
1 }% o) E, F: f
~7 h7 Q4 b7 l 二、判断题(共 20 道试题,共 40 分。) V 1. C++语言中规定函数的返回值的类型是由return语句中的表达式类型所决定。+ `0 c* {, Q" O' g$ r7 O. Z1 ~/ ?# y
A. 错误, ^. J8 E1 S( m4 L9 r( O
B. 正确/ d* L) j1 V b: D
6 Z$ p' L$ v0 X7 Y6 x6 f
2. 变量必须先定义,后使用。
1 y" N _. w H5 F# j5 U- g/ h' IA. 错误, @7 }3 W8 p/ T; W! M! B t
B. 正确
j2 t7 u4 e& s, a9 W/ i+ o) q) W8 @% m
3. 私有成员只能被本类的成员函数访问,来自类外部的任何访问都是非法的。( ). {/ U0 E( L7 E: Y0 p
A. 错误' E4 C6 n7 a. c j
B. 正确
. n8 h" C1 ^+ H! \* H- y8 T
0 V; S7 Z( Z* n1 x+ U4. 类是一种类型,它封装了数据和操作。9 C' K4 [! b2 u8 ~! Y. ]3 |
A. 错误
9 o% S m* @. v( I$ |4 vB. 正确
; h* {2 h+ D8 J) S
3 k6 T1 R' i; v) M2 i8 H5. C++语言中,标识符不区分大小写。( )8 F' y- q3 f; F7 C
A. 错误" q2 H( G' A( i) `: t
B. 正确
% x9 W" ~& Z l! Y; t* ^5 C6 ], f2 B; c6 H
6. 派生类的成员一般分为两部分,一部分是从基类继承的成员,另一部分是自己定义的新成员。
% w) o1 K, h5 ]5 t; D, y( bA. 错误0 d. I" }: a K7 {9 D
B. 正确& j2 m" K9 [8 _* F6 l1 u
# X7 C1 K6 t# j" B4 y
7. 作为语句的函数调用是通过函数的副作用来体现的。
# j2 c3 P( o2 h2 I: f h" RA. 错误2 t6 B$ F( u$ D* ~: p
B. 正确
0 h3 N& V- o) P. l$ j" A% Y8 G; v9 e
m6 ]0 W1 ]0 R. @7 c8. 左值是能出现在赋值表达式左边的表达式。( )% ]$ N$ k: g3 g- Q# k
A. 错误
( z1 s) o9 v3 e, z2 Q; X& ]& D& jB. 正确+ m' _: u7 q( J1 }" K. R
5 G8 h3 `) v/ N/ @: p5 B$ i9. 对于全局函数int f(void),与其完全等价的函数原型为const int f( )。8 f5 p6 P/ Y0 t; t& o3 s
A. 错误
; x; s- F6 W4 @1 o! mB. 正确2 ^, {8 v6 U4 f; X
# T- |( R) ]" p$ R3 |- k& d: j) T3 R
10. C++语言的参数传递机制包括传值和传地址两种,如果调用函数时,需要改变实参或者返回多个值,应该采取传地址方式。
# [% \3 ]$ h8 A: Y; `A. 错误
/ j4 {5 e; ^5 z& y$ i1 e+ xB. 正确7 y+ e) T5 `) f( y
; d9 }1 V9 |& S1 K% a
11. 头文件中一般存放着变量和常量的定义、函数的原型以及类的定义。
5 U; Y6 J" p0 A: K) B* B. R: RA. 错误* R% U! G8 S) T+ w7 w( v
B. 正确
8 Y2 }2 \0 @, ]' ?: w/ ]$ D4 [( G7 |9 ?' C8 x# ~
12. 通过使用不同的类型参数,函数模板可以生成不同类型的函数( )" z* ~/ e3 w6 {4 k. a0 E
A. 错误1 q* I1 }8 T/ e
B. 正确 I. T% @) e$ z, G/ d4 _
: K* V( _3 `" J) K4 E6 [
13. 声明一个结构并不分配内存,内存分配发生在定义这个新数据类型的变量中。( )1 ^/ W7 P( U* i
A. 错误
% {* K: r0 C! b& J8 U3 tB. 正确( s1 g0 Z# E3 L& E* B2 J. p) T1 y5 Q
! {" J8 T- x0 v3 u7 E7 D- d% I14. switch后面括号中的表达式只能是整型、字符型或枚举型表达式。( )
% C4 `$ p4 P* r" K/ d$ Z" k- _. q) AA. 错误# U: k4 L `* X( {; o$ e/ h
B. 正确
/ P- _& y2 ~0 S& O. ?+ o9 T M) x3 T2 M+ A
15. 系统可以提供默认的析构函数。6 o' D" |6 ?1 J" c5 L
A. 错误# p Q5 V/ G$ C4 c6 h
B. 正确
$ U* h, R4 A/ N, L6 T) S7 Z2 V; I% \, J) K6 K/ ~" }( u2 Z
16. 在基类中被说明为虚函数的类的成员函数必须在每个派生类中说明为虚函数,才能具有多态的特征。3 f0 l3 `- f/ i; L5 T
A. 错误
5 V+ a( N9 M% R z$ P6 q# `B. 正确1 E [1 r: y N9 M
3 n+ n$ o8 w; ^7 L$ S& s17. 指向同一数组的两指针p1、p2相减的结果与所指元素的下标相减的结果是相同的。( )
3 `' N/ F" |8 W" K$ \( MA. 错误
/ V; B" `) v# R1 y; U$ B, ZB. 正确3 a+ r- k7 z. } F9 W( N6 W
5 b, C8 s1 D* L4 z18. 在面向对象的程序设计中,类描述的是具有相似性质的一组对象。
0 j4 C; V& ?) A' AA. 错误2 g2 h( \" N3 Z0 O3 ~
B. 正确2 m: n& C6 k/ O/ _! \! r
: e, c5 _9 U# H$ A1 u2 P19. 若在类Base和派生类Derived中,分别声明一个同名的整型成员变量int x;,那么通过Derived类的实例对象,不可能输出基类Base中的变量x的值。
( U% O. V V, w% AA. 错误
, C7 f0 o, h% I9 K8 A ^+ ZB. 正确' f0 L% ]5 W4 ?
4 n9 [) `$ g& d0 e
20. 设置函数的参数默认值的顺序是自左向右。
5 B; g$ W3 [1 h( R* zA. 错误
4 J9 S/ E1 x& ]+ F* `9 y% ^% fB. 正确
/ [% w7 m) X: ?5 S
# L. `9 F% e' d8 | E; k! _1 D0 p3 t& r# n, h/ L" {! ]
1 p$ v% ]2 c8 G 三、多选题(共 10 道试题,共 20 分。) V 1. 在进行完成任何C++流的操作后,都可以用C++流的有关成员函数检测流的状态;其中不能用于检测输入流状态的操作函数名称是______。
2 x$ N& b7 a9 J; ^A. fail" Q' h/ D, @3 A0 E5 F; [
B. eof
' G! x4 s7 f8 x, k2 ~4 M: yC. bad
$ g5 V3 V. J+ n& n4 Q fD. good4 i6 g6 `! W& ]" S' Z+ x. y2 ]3 ~
; d1 A: J$ {3 d/ z
2. 下列哪些是类的特性______。- ^; J7 Y# r; _. \& s! Q6 D3 k. J
A. 多态性+ m2 j5 c% R1 ^4 e* q' O) z0 i: z
B. 继承性
/ ?# S4 `- t- J2 BC. 封装性6 o4 q8 O g5 e/ p# q8 d
D. 虚拟性
0 @( N1 L' u& E
- @5 e9 i* x" s) T' e- h1 \3. 以下不正确的描述是______。# H3 j5 W k1 t6 _/ Y; c2 Z' l
A. 函数的定义可以嵌套,函数的调用不可以嵌套3 K6 O) Z( i% q4 y
B. 函数的定义不可以嵌套,函数的调用可以嵌套
0 @0 r' Y4 L! c! Z# V( Y# v0 fC. 函数的定义和函数的调用均可以嵌套
% D/ e3 I. z" V4 JD. 函数的定义和函数的调用均不可以嵌套
& R% n0 F& R3 J' i$ }1 }1 i1 j9 }0 W/ a- d* |2 n
4. 以下关于函数模板叙述错误的是______。: z; B1 w. e4 W/ }. f. E4 {1 W
A. 函数模板也是一个具体类型的函数
# l" `3 [* ]0 r! a' l1 o. OB. 函数模板的类型参数与函数的参数是同一个概念
0 q# u! N. M i4 ^& ^+ BC. 通过使用不同的类型参数,函数模板可以生成不同类型的函数
3 @' I5 s$ w" H) |3 W: y* F qD. 用函数模板定义的函数没有类型
- V/ k! @( w) V4 k6 ?
" V4 k) g% H& N: g- k9 K1 d' x6 W5. 下面描述中,表达正确的是______。0 j) l* A+ u: y, i9 U
A. 公有继承时基类中的public成员在派生类中仍是public的
- Z" Y3 e" ?; l/ S3 E$ uB. 公有继承时基类中的private成员在派生类中是public的
# _0 X3 Z+ X7 G/ K, X' [( lC. 公有继承时基类中的protected成员在派生类中仍是protected的
0 A- c8 |. _* D# f; }- |D. 私有继承时基类中的public成员在派生类中是private的
, x( G: g1 R) D2 u, D: q; ~0 l$ G$ @3 k0 a
6. 对C++语言和C语言的兼容性,描述不正确的是______。
; n$ e/ [7 h$ y( kA. C++兼容C
1 d+ y, e) x4 I: f3 t' B: AB. C++部分兼容C
& |. C! B0 j) N- ^C. C++不兼容C$ z9 s. I3 P0 b
D. C兼容C++
" D% S) t8 D* K4 h" _7 q0 ~; Y/ k" C/ w. l* M7 r3 u+ E; p
7. C++语言的跳转语句中,对于break和continue说法不正确的是______。
8 y l2 [3 I# |- Q* CA. break语句只应用于循环体中" A) T! w( Z; U3 C- P$ A' W$ U. d
B. continue语句只应用于循环体中
; `6 U- B( D' KC. break是无条件跳转语句,continue不是
Q, I5 C5 a7 aD. break和continue的跳转范围不够明确,容易产生问题) Q- h: P7 `! w, n: j( ?3 B
. [ P7 i- B T9 f1 ?
8. 下列说法中错误的是______。
, Q) e: z3 t( w' S6 d6 UA. 不允许设置参数的默认值! a* K) i; N& M1 \& H
B. 设置参数的默认值只能在定义函数时设置
; u+ Q) s4 K8 J- v- m4 L5 [C. 设置参数的默认值时,应该设置右边的参数
# M0 P( b$ d8 k% W s, R; hD. 设置参数的默认值时,应该全部参数都设置* e) |% V: Z8 E6 _3 ` p
+ O( l7 c' ?' k( t' D2 E6 n
9. 关于函数重载,下列描述错误的是______。! K, Z* n# u" I& A' }- |7 u7 q
A. 函数重载是指两个或两个以上的函数取相同的函数名,但形参的个数或类型不同0 g" _! C6 F" H& F3 [
B. 函数重载是指两个以上的函数取相同的名字和具有相同的参数个数,但形参的类型可以不同
9 h: V$ ?" F5 ?! l# uC. 函数重载是指两个以上的函数名字不同,但形参的个数或类型相同
% I' v' }" c6 B4 H# eD. 函数重载是指两个以上的函数取相同的函数名,并且函数的返回类型相同
$ s/ K) _, [$ [
4 l6 b \ X2 u! Y+ m) \" d+ R. [3 ]8 c10. 下列说法中错误的是______。
' V* c! a8 Z6 e; _A. C++程序总是从第一个定义的函数开始执行
# u9 V! r9 H2 ?, Q/ l/ m4 W; lB. C++程序总是从main函数开始执行
/ v- C! N' Q, v0 T+ M6 \# y |4 zC. C++函数必须有返回值,否则不能使用函数
2 T5 X- i/ P3 W' i# CD. C++程序中有调用关系的所有函数必须放在同一个程序文件中. ]! b- e5 t* r9 H9 U
6 B$ u" d! V8 M# U
/ |# S7 g4 c8 y' b: t7 e
4 w+ k4 K: N; C$ F( Q L* [& A w
; U9 Y/ q- ~9 J# s: L) o6 f. ^
2 a) C) {8 l4 [ x/ x6 g9 i" e) \# o0 L, b
+ U" L+ F# ?' ?$ J R
, U$ f! U0 l' y* s- t. \
! ]* W+ h0 p& U8 N4 Z
! P9 e) y5 ~8 X- K1 w
' d! T+ h- {/ g- W0 i) W1 L/ A' c( ~8 m! y' F7 f
* ^. D- T! {( l9 \% [
2 M3 a9 [4 D: H* p
" V* ~, z6 u2 p# m
|
|