|
22春学期(高起本1709-1803、全层次1809-2103)《程序设计基础(下)》在线作业-00002
! u7 G5 ]0 K* m9 I" [: D4 w% u% `试卷总分:100 得分:100& a q {0 Z' q3 f# |" b! w
一、单选题 (共 20 道试题,共 40 分)" G8 \7 Z' n) }# G
1.在派生类中,重载一个虚函数时,要求函数名、参数的个数、参数的类型、参数的顺序和函数的返回值( )。% e5 C( _ X* p
A.不同# D8 v6 a' M. |! k5 g) Q. z7 C
B.相同- r9 a* v8 B0 f3 {% W0 {
C.相容
( t% w/ r. h, x4 V& a+ p! U: XD.部分相同
S) r/ ~# a4 P5 Z1 Y: _资料:( m, _) C2 L# H* P) u' q8 G& {
1 Z6 D u3 W/ m9 E
2.下面( )不是常用的存储图的方法。9 M6 J) B+ m) ]) }, f% V5 t7 k
A.邻接矩
( T2 y- m4 U; m5 K( x( j4 c& D7 w1 GB.邻接压缩表
# Z; F! C5 z0 y5 t% nC.邻接链表! q% [9 Y$ n# v8 ]# b
D.散列表* J3 H1 ]$ F7 _6 F" n
资料:5 n" I( u! @" R
e9 _& M5 o( o
3.下列运算符中,()运算符在C++中不能重载。
. N- L& O5 P" a. j. Z; C) EA.?:
. V" h0 A. U0 S. V1 `6 O- u5 JB.+3 z- N2 G0 s; X$ _* w$ t8 G
C.-; j7 q$ E( g" w- k1 o
D.=
' [) X/ ^, i; V4 l* S$ o/ Z资料:$ @' `1 q" d& D0 R1 B* h$ B
* m: q; @* q! p8 z4.在一个长度为n的顺序存储的线性表中,删除第i个元素(1 ≤i ≤n)时,需要将( )个元素向前移动一个位置。
% k4 [' m+ N0 }A.n-i! L. v- b! Y& p
B.n-i+1( C7 U: L1 z$ b- `/ T/ d
C.n-i-1
* w2 @ z& p" V' {: ~D.i A3 s9 P1 o0 N- E+ g
资料:6 @3 B+ x% ?6 S* n
* T/ N2 P# J- ?" b; w
5.在含n个顶点和e条边的无向图的邻接矩阵中,零元素的个数为( )。
, ]% u4 W( s: ^2 x/ e4 [; nA.e G! T' P( B9 [0 E8 S% _
B.2e7 s2 k: D0 q# C
C.n的平方减e
9 u, Q" z* w+ i" p0 e7 s$ y( pD.n的平方2减2e; m, P6 t8 m% v3 b x% w- Y* }
资料:0 {: c X% |: g" G& Y
( U2 k# c |# B6 z6.缺省析构函数的函数体是( )。
0 M- U g! O* S6 r$ F6 l1 O& y' ~2 zA.不存在
$ q- \. d+ [; i/ R X" ~+ C8 S; dB.随机产生的
6 S+ i9 l8 @9 \7 } G( {C.空的
" t, C* M" l6 w' O0 h' y; g5 X QD.无法确定的7 y( l, G" o; _" e
资料:2 h9 a" q, u7 ^- C5 @0 ~
& y( Y0 r$ w; E/ \
7.在一棵完全二叉树中,根结点的编号为1,按照由上到下由左到右的顺序为二叉树结点编号。若编号为5的结点存在右孩子,则右孩子结点的编号为( )。6 N X8 T/ I, e$ Q1 }! A
A.9
% c' {7 e$ ^9 T( n9 G. |B.101 c. r ^( m4 L" p0 _0 q8 ~) R
C.11/ x" [7 q* T5 R9 m
D.12
; U2 D m6 F3 I* Q: G资料:6 q* U! [) u$ W# ^1 z2 C3 c
5 B# @. K8 a9 X: I ]0 D4 b8 q! R8.下面程序段中是内联函数的是( )。 class location { private: int x ,y; public: void init(int initx,int inity) { x=initx; y=inity; } int getx(){return x;} int gety(); }; inline int location::gety() {return y;}1 d. q( o% G. A; m* r
A.init (int initx,int inity)( g, J1 S# s X1 p7 s4 c! I& m
B.getx(),gety()
$ D: W r0 c9 ~% ]4 |C.A和B都是$ V/ i4 @6 \6 G( N5 q
D.A和getx()& m T: T1 Y3 b3 {0 Q
资料:
8 P/ b2 I! [5 N: }; n2 U4 ~9 ?* {* \0 w. W8 p3 L) ], `; l% h
9.建立类模板对象的实例化过程为( )。
. E& \! M* W1 `4 T9 P9 HA.基类->派生类
& M' R1 X6 S# V: m$ u7 ?! |! yB.构造函数->对象
/ U Y o$ ~; b& wC.模板类->对象# D. b6 R' W7 F8 O2 f
D.模板类->模板函数
9 v; U) Z5 G! O. Z资料:
1 w9 h4 L9 Z6 Q. `1 i( V
- R# N! Y: \* C10.下列描述中,()是抽象类的特性。
9 c* X% S+ D/ @* y; @ MA.可以说明虚函数2 P% Z6 B A6 z
B.可以定义友元函数* l6 w6 ~ e- B4 ^
C.可以进行构造函数重载# N& X2 q$ c2 |% D& x1 c+ p
D.不能说明其对象
) j: L0 d1 g% ~" O. W% E: k; d资料:5 ?6 W' Q, c3 j5 n l$ j
9 p) s+ {& l3 o% O11.在下列选项中( )不是ostream类的对象。% c0 Q4 G ^+ v& d
A.cin7 }" A# {4 ^+ J2 d+ \, W: P
B.cerr
- s; U# [% U5 x& R' Z: nC.clog' j: ^9 l/ g6 p
D.cout
& [/ `5 s8 j* a# z资料:
/ a$ y# ^ w8 ]" _* [8 R1 D6 R9 T: m# @
12.不论派生类以何种方法继承基类,都不能使用基类的( )。
# B% M3 I& h" z) t- {" c' eA.public成员
# Q) ~; J7 E9 C% ]/ D9 [' lB.private成员
$ h8 S' _5 z* aC.protected成员
& j. c' x3 S# D! J$ D/ A( jD.private成员和protected成员
* K5 z& r# A: \3 V* [: |资料:! r' g1 x) m: h% p( O4 l
; n& n. l3 y# N) g, D13.( )是析构函数的特征。2 Y& Y/ U# d# w/ k; E0 B! }
A.析构函数可以有一个或多个参数
/ O9 |+ N; I; Q2 O5 mB.析构函数定义只能在类体内 K2 d+ J5 ?- i- d0 n) u5 P1 `$ v
C.析构函数名与类名不同9 a0 r5 t+ R' T2 ]
D.一个类中只能定义一个析构函数: i+ q) j$ T8 J* T A' c+ L
资料:
% {) k I/ \( D6 f! F1 Y0 _) I4 X% k2 E( B( f' y
14.对于一个具有n个顶点的无向图,若采用邻接链表表示,则存放表头结点的数组的大小为 ( )。
0 P) m2 |* h. O% UA.n
4 ?3 V0 D" [7 b3 D) q. k$ j( WB.n+1
% V$ q% D: j1 ?( i1 xC.n-1$ Z8 g2 e: Z+ u( N6 |; C8 r
D.n+边数8 D# x3 E. F: |
资料:
& Z x+ O9 l1 u* ^' } l0 g0 u- Y8 f: g2 f3 A. [
15.类模板的静态数据成员由( )共享。1 l7 ?' ^% R; O4 g+ L9 V5 \+ O: `& M
A.一个类模板的所有模板类
0 @; s" i4 |$ nB.一个模板类的所有对象5 Y3 y7 W5 T2 R* `8 A
C.一个模板类的一个对象
/ Z3 Y& e$ G' ] ND.一个类模板的所有对象7 b G' W$ `8 N- Y
资料:' m' I. L! h0 H
/ V0 N* U; \+ e; _3 Q# ~4 ?4 h
16.如果以链表作为队列的存储结构,则出队操作时( )。
( F9 m9 k& l' _5 d, [A.必须判别队列是否满6 |2 J' t+ A9 l: w; a
B.判别队列元素的类型 }: T y$ m0 F. R, _9 |
C.必须判别队列是否空2 e" @ i6 a) L/ H, F- R, J' ?
D.对队列不作任何判别
6 c% f' U* w0 w资料:1 V/ C. R) L( ]- q
0 k) K% p8 z% @17.类B是类A的公有派生类,类A和类B中都定义了虚函数func(),p是一个指向类A对象的指针,则p->A::func()将( )。
- n( H" E% o* @9 F7 y" ?A.调用类A中是函数func()& z% ], y* z8 @' x* ~9 f
B.调用类B中是函数func()# N' q+ H; }- J' N1 e9 m+ w# s' [, w
C.根据P所指的对象类型而确定调用A中或类B中的函数func()
2 e- c& ~: N4 w0 H, ]D.既调用类A中函数,也调用类B中的函数2 U7 }8 T8 [% M/ K& O5 }) C
资料:, Y8 S' U' w% D. j/ R
a' L- m _+ K% E
18.下列虚基类的声明中正确的是( )。" h4 ^- @) z$ p; F) F$ T. B
A.class virtual B:public A
& _& d1 n+ l$ M3 K! Y& [& ^* kB.virtual class B:public
% {7 t4 j& D5 HC.class B:public A virtual ^6 ~$ s1 D8 f* ?4 B
D.class B: virtual public A
/ Q" F1 P% T' a7 p! F+ J0 ]# E( K资料:
3 x* I8 C. M! U0 e( D' b
W5 @* _8 H) d) ~7 `19.下列关于对象数组的描述中,错误的是( )。6 \3 I8 Z" `2 R- n: a
A.对象数组的下标是从0开始的
9 a# C: L' J$ Q; ]- `B.对象数组的数组名是一个常量指针6 _, n: g6 H/ {2 g/ K
C.对象数组的每个元素是同一个类的对象
1 @3 b% d0 e: f8 l1 xD.对象数组只能赋初值,而不能在定义后赋值
* z3 c. ]0 ~2 C* J资料:
; ?0 Z- \' Y% @" d4 Z; l" O$ n) s6 @ E$ X$ i& @- n- J0 U! f
20.关于this指针的说法错误的是( )。
\# U- a% F8 w: \; K* h! RA.this指针必须显示说明
2 i6 D1 O4 z& OB.当创建一个对象后,this指针就指向该对象- H7 l5 \; h( } L- ^8 m
C.成员函数拥有this指针7 ^; P4 b1 s, J* P7 f& s4 p
D.静态成员函数不拥有this指针
+ z7 ~4 m, B- E3 f B* ^资料:$ x6 H9 j" V5 c# G. h
0 K0 {8 v8 a% m& Z) f二、多选题 (共 15 道试题,共 30 分)' `" J: n: b) S) P, o
21.下面描述中,正确的是( )。
7 Q# b2 V5 m' v7 o' ^1 ~: v( L, aA.可以定义ios类的对象0 b( Y3 c1 O( k' w! G
B.istream对象用来实现输入操作6 W, s7 ^2 F/ g8 L
C.ios是fstream的直接基类 j4 D! b' V7 ~' j- u: e t" T
D.istream是ifstream的直接基类
# R. O# k- J3 {4 ~4 o资料:$ z" J. @ Q* v
+ n! |( E" L, z* X
22.下面哪些数据结构属于非线性结构$ T4 D" O" V" U! q5 S6 o/ Q
A.线性表
8 _4 V1 E7 I. j1 vB.树1 G" l9 i) ~% `
C.图% E m3 k& T0 m. @! {5 c
D.集合
; W- o; [1 w3 A3 Q4 ~7 d4 e, l资料 2 |2 \* q; _$ ^& c* F/ a _
9 g" f1 h; }6 C9 h5 F8 _- ]& m
23.如果类A继承了类B,则类A称为()。) K2 l& f, M! e8 D! t
A.派生类
- O2 |! V& m+ K3 OB.继承类1 K( _, A& T. }: j' g
C.子类' o0 a% K- r3 ?: v, m0 |" S P% F
D.父类
: |0 {# W. X7 w5 K+ @资料:
) V/ x/ P0 Q( B, f( P; @3 e) S* _2 B! B. R! Y
24.下面对友元的错误描述是( )。
9 x- ] U5 p% pA.关键字virtual用于声明友元
8 A w( I- E0 s OB.一个类的成员函数可以是另一个类的友元1 k3 Z# l h) M
C.友元函数访问对象的成员不受访问特性影响
9 y- g! {9 r% J& H- [D.友元函数通过this指针访问对象成员
. _9 V3 {8 B: [' e/ n资料:
! q* M f2 N/ O i4 r( p1 Q! A; B5 t* p( y. z2 P
25.已知Derived是Base的公有派生类,且已定义两个对象Derived d;和Base b;,则下列语句中正确的是( )。
0 v& M- Y" U& u- c% sA.d=b;
( `: K+ _8 z; b6 _. y* jB.b=d! x; g8 p2 I( S- ^* b+ Y4 i" J
C.Derived *d=&b;
4 }# _4 q" A aD.Base &b=d;
v+ f* |0 F% C. Q* l6 V+ ^6 b+ ^资料:8 Y5 m( J$ Y2 }0 i
; a7 h$ }0 ^2 z; Z
26.基类中的保护成员可能是派生类的( )。
) _+ ]+ n6 j" G6 LA.public成员* h2 a7 s' v' m. ?* `- ^
B.private成员
6 M" n! F! w! x7 e& E0 BC.protected成员* \( I I% ^$ _1 O$ A% A
D.友元成员+ {' M- e0 }) s3 A
资料:
1 m( x/ w( }# I! p, r, A0 o: i' G8 ]) A# ]4 G3 j
27.对静态成员的正确描述是( )。
# e- v. x8 i) W; _, YA.静态成员不属于对象,是类的共享成员
" c( |6 A, R5 @/ k7 Y% BB.静态数据成员要在类外定义和初始化0 k& z3 r$ n* l" R4 d
C.调用静态成员函数时要通过类或对象激活,所以静态成员函数拥有this指针
) r/ ?; L# s, q: z% p% e+ RD.非静态成员函数也可以操作静态数据成员' J0 S9 Z5 d7 ^% H7 }5 r
资料:BD% c* J: p( }# a4 p
8 ]6 s0 H# O" T+ X9 e: e: V28.下列关于类的静态数据成员的说法中,正确的是( )。
: L1 w4 j- w8 e+ q: A* J2 VA.静态数据成员的值初始化后不能再修改; }* ^2 F8 P. V# @( q1 G
B.静态数据成员必须在类体外定义和初始化
0 }" ^1 X3 P o( R8 B: j7 W1 PC.使用static关键字可以将一个数据成员声明为静态数据成员
9 ~# l; Q' C! H, {, \4 bD.静态数据成员的访问控制权限可以是公有、私有或保护. r E; F" w6 j1 y; o- ^( |
资料 / r6 [ u) v" `1 [5 E
7 k" o ~- s* Z' F1 K
29.下面描述中,错误的是( )。
8 e1 r8 B! L* \; L6 ?A.在基类定义的public成员在保护继承的派生类中可见,也能在类外被访问2 e$ x& o2 R$ B
B.在基类定义的public和protected成员在私有继承的派生类中可见,在类外可以被访问
/ M# [: f" D: V7 ^2 i+ ZC.在基类定义的public和protected成员在保护继承的派生类中可见/ H5 o* ^9 x5 P$ W" u
D.在派生类中不可见的成员要变成可访问的,需要进行访问声明
) Q, Q6 Y0 g7 a资料:B6 B) |; W4 {( e8 X f. d1 @
4 h! F9 \/ n. |30.输出流类对象包括( )。
) d1 T) K0 j p. U; d, L+ lA.cin
( u# f6 A, B* r+ N4 d7 v) B) ^! m/ b$ ^B.cerr, V$ R9 D) X" I2 u
C.clog. q$ r! w9 h9 r0 s6 w& f, P
D.cout
5 |1 s4 |7 \! E, e6 r, X资料 : w; u2 q9 _4 K# \1 D/ ~
% h- O$ E( n) i# t! k
31.下列打开文件的语句中,能对打开文件进行写操作的选项包括( )。
0 }" J. ]; p4 xA.fstream f("file.txt");
4 P9 I) r: l7 y: R- XB.ofstream f("file.txt");6 N- e1 S! I. D2 B2 K6 L
C.ifstream f("file.txt");
) l! ]( E2 [+ m1 @/ V/ o7 G% XD.ifstream f("file.txt",ios: ut);
) g$ P3 [$ C* \资料:B/ ~3 {6 P! k( [# b4 _/ J' o( e
, z8 R/ {. g7 B/ I32.关于类和对象正确的说法包括( )。
" L$ v3 n& g' T7 eA.类是一种类型,它封装了数据和操作2 b0 a! f+ r0 \% n- X9 _
B.对象是类的实例
* X( H5 @4 g) GC.一个类的对象只有一个/ q A+ a. E+ i! u X/ {* t
D.一个对象必属于某个类
, ?8 \- d: q3 B. ~$ o资料:BD, ~5 b! @' U0 V$ T* V
( S( q! U7 h* U7 Q33.关于函数模板,描述正确的是( )。
( i/ i3 s' Q$ ^$ E* x5 h P# jA.函数模板必须由程序员实例化为可执行的函数模板4 q0 T$ s1 u, H8 _0 |5 [+ r
B.函数模板的实例化由编译器实现
2 M& T/ C3 P1 W1 AC.一个类定义中,只要有一个函数模板,则这个类是类模板
) z1 n/ Z0 m6 E$ D- gD.类模板的成员函数都是函数模板,类模板实例化后,成员函数也随之实例化1 F' O+ T/ w8 Z3 F+ A
资料:: P5 K- n7 D" t5 g* Y
, [8 D/ W1 d7 R5 y7 j3 t
34.对静态成员的错误描述是( )。( _+ J8 }8 Z* k* _7 |6 b
A.静态成员不属于对象,是类的共享成员) S/ |- h9 Y% M7 h7 M: Y
B.静态数据成员要在类外定义和初始化0 [, n4 j0 v% ^, N
C.调用静态成员函数时要通过类或对象激活,所以静态成员函数拥有this指针
# u: r3 C# T# r5 }( O0 lD.静态成员函数可以操作非静态数据成员
: f0 E9 {8 b3 L5 p- j6 k5 @9 s资料
9 e7 q+ n) n4 |3 M) Z1 [- m
! t M6 z! u7 u& M35.当类的继承方式为公有继承时,基类的()成员的访问属性在派生类中不变+ j9 O2 t7 m1 \; L
A.公有成员
) w3 R" Z% B$ I! E4 T/ YB.保护成员
" I8 ^- R' y# p6 CC.私有成员
3 `: d7 b: b4 `7 `D.友元成员# L7 n9 I3 B' ^" e; h; O- O
资料:B" y: i% w& l, s4 p# Z; Z9 T5 D
$ M3 l( D- ~9 k* t8 s) t8 O" ~6 L
三、资料来源:谋学网(www.mouxue.com) (共 15 道试题,共 30 分)
/ {/ V1 e/ I4 m+ f2 i/ o# t2 N w36.边上带权的图就称为带权图。
2 K! `" e' I' X: {$ O! q7 r/ S资料:正确
% T& b, s6 M H7 k2 s5 D6 d
; w o, e; w1 _2 [6 A2 I7 O; Q37.树的根结点所在的层为第1层,其余结点的层等于其前驱结点的层加1;树中各结点的层的最大值称为树的深度。
; d, l8 U: p3 r3 ^& r$ M4 \资料:正确1 Y: {2 R: {9 P2 ?! H3 k, N
( r& l! _9 j' s5 l i# F
38.二叉树的顺序表示法操作方便,但缺点是容易造成存储空间的浪费。
8 b9 t3 V0 r% U M+ B资料:正确
: M8 a5 X' ]2 V0 i0 [
# O) v% U/ t) `8 g$ Q6 I& S39.类的常量数据成员的值只能在创建对象时初始化,初始化后不得再修改。
7 O5 L" {! U- c资料:正确
x3 M: }, ]! f0 ]5 L/ L6 _8 D d2 k _
40.在通信、数据压缩等领域被广泛应用的哈夫曼树采用的是二叉树结构。
9 {( p# g4 B( w2 w4 A! f7 d资料:正确
9 D; {5 Q; w- r- }( W3 d4 I3 H6 ]3 N5 o
41.C++语言允许使用友元,但是友元会破坏封装性。
* e% I" f; A/ H( t( X6 e( n资料:正确
- V8 N' [8 M! Z. h5 `3 `: U m% s$ @7 c& l! u( P9 s" E/ o& N
42.在保护继承中,对于派生类的访问同于公有继承,而对于派生类的对象的访问同于私有继承。; ~. V( v, Y; i3 t( C% o9 O# }
资料:正确1 q2 Z" c% G# i0 K( Y+ `& j
8 ^; s4 x* H" e2 v) k, Q* t# o43.二叉树的第h层最多有2的h-1次方个结点。
) H4 T# L3 ?8 D8 ?/ c- c& t4 Q( l资料:正确2 U! R: t' O+ r H8 F
0 C' b0 u4 d* }2 H44.C++的I/O系统通过流的机制实现文件和控制台的输入输出操作。
' _6 P) o4 R1 G$ m- l" o) M资料:正确
) P" q. a! L s4 X+ r
G( ^4 y! g) S; a( J( W45.线性表中的元素可以是任意类型的,但同一线性表中的数据元素必须具有相同的类型。8 T% w, A \ A5 u7 b
资料:正确' A B- d" {; X& S8 B
9 D" Q# a/ ^5 o6 H& d
46.类的常量成员函数中只能使用常量数据成员。
" q* X& s- c- s资料:错误/ {3 y- ] O- w1 i$ w
% o) d9 u& ^* s# j2 \
47.线性结构的数据在进行元素插入、删除等操作后可能会变成非线性结构。
- `7 v7 w. [/ ]9 W' a" Y; U& k: Y资料:错误
7 G- v' d. [. W' E/ ]$ O8 s0 x7 h# K: K6 v- E4 \
48.在C++中,虚函数帮助实现了类的封装性。
' ~" a4 F% a! C% b+ s! L资料:错误5 c! f3 r# M* w" \3 t5 e0 a
A4 H! I" ]3 d! `
49.根据关键字查找二叉树中的结点,实质上就是按照某种规则依次访问二叉树中的每一结点,直至找到与关键字匹配的结点。7 Y/ t/ _, [/ X. a" _. ` ^( q$ F
资料:正确/ P& u. T) W, j- G
4 b6 ^+ j$ y! E( X' Q" p: J
50.模板定义中标识类型的参数必须用关键字Type修饰。
8 ?; j; v! q3 Q: o- Y: h0 ^资料:错误
0 l4 X7 R7 C9 S. H1 ~" |- v
0 z4 J* l' z" [0 p4 r
5 [5 a* v& @3 e) D6 j% U- L; r4 @! C; t& ]% Z) c
5 r% b* n) ^; p, E7 H; [# P( B& _# v# m5 p
" x% u; I* F+ t: _2 [5 Q H9 m6 j0 X4 X& F# t9 _
% C& P) G2 y" N' x1 P/ A j( W$ O8 z$ e5 p& |* s
. g: G5 P7 U* \2 Y% h! @9 [- O; b ]
, Y# u* P' a! g3 R( ~
|
|