|
23春学期(高起本:1709-2103、专升本/高起专:1903-2103)《程序设计基础(下)》在线作业-00001
; j J* m0 D0 {: ]试卷总分:100 得分:100
0 ~9 m0 e+ n7 W1 h. p一、单选题 (共 20 道试题,共 40 分)
+ R l' q9 _" U, f9 @1.在含n个顶点和e条边的无向图的邻接矩阵中,零元素的个数为( )。8 v* l2 o: N8 e* i4 ^% {3 G7 U
A.e
+ L8 r+ _: k/ i. J0 V' QB.2e
7 O4 }0 ?# s: c B6 h( \. c5 WC.n的平方减e
" s# C4 j# k" m/ n+ ^D.n的平方2减2e
/ |$ M8 y7 j2 K' I! ], i2 j9 y答案:+ I6 F2 r/ o/ v4 e5 W. O
; U4 x8 G/ t5 @6 \) m" B# R
2.深度为5的二叉树至多有( )个结点。8 f1 N$ h9 q( ]5 n$ y) {
A.16
! M. M c1 w/ D7 C3 n- J5 W# QB.32( |( j. Z" ?' |
C.31
1 z* {: O, @( ^D.10
7 T* J6 u4 o5 Y# O- _8 y. }$ h& R( r答案:
4 u. {: q+ B: }( u) z. g" i9 N3 J. d: q" z
3.动态联编所支持的多态性是( )。
|( b/ F+ ?1 ]& {) pA.虚函数
8 c- p, N; `3 J; mB.继承
8 Y- [, Z" r4 b$ K2 r8 r! YC.编译时的多态性
6 ]/ {6 y; V4 T2 j7 }1 Q2 ^D.运行时的多态性& M" A% | e* J8 ~4 p5 M; @
答案:
* W- I5 e6 S( I5 n5 A0 E. Z) k6 ~0 G1 ~
4.实现运行时的多态性要使用()。
4 Y2 ~( a' ]) a0 |A.构造函数
) n+ ~% F* [3 t6 ?1 e# `8 {B.析构函数
' r( c) z5 Q! ]5 g6 |! `& NC.重载函数3 m, J4 x2 Z8 s) R
D.虚函数1 W6 e+ D; a$ ~) H
答案:
( Z# q' ^3 w P/ k/ n6 I T% h# M ^: Q* }
5.下列关于队列的叙述中正确的是( )。
; Y y, y8 S9 _: [2 Y: S6 HA.在队列中只能插入数据. `3 x R0 L9 A0 x0 E% O! n# k, |
B.在队列中只能删除数据
t- i* O7 e: u) T% D( fC.队列是先进先出的线性表
7 e1 w$ I/ }6 {1 D g$ @D.队列是先进后出的线性表
! y V& X1 h: I$ v* m3 `4 j7 ^/ Y, I+ F答案:
" @5 c5 c" M' o9 T
) l- B) j% k* O9 H0 c6.C++有( )种联编方式。
* c# s8 p6 g0 M4 p5 AA.1 e0 O; S- O2 m0 g
B.2
% K) W/ P' S1 g0 L$ UC.3, ]- a/ A+ y3 x- j/ g
D.4; k$ c5 u* _1 P1 \
答案:B
% r: P7 v5 W2 ^3 f$ h* w, v
' b" G8 n5 r$ x& H' N7.在含n个顶点和e条边的无向图的邻接矩阵中,非零元素的个数为( )。
) f& g7 G# u% _# T' ?, X7 OA.e
{. u9 s& J+ k% o: V& vB.2e
) f9 i" f9 }! LC.n的平方减e
+ O! m8 m3 J Q! P; OD.n的平方2减2e. v9 ?& A) \* l; j# a+ \- ^4 Y% Q
答案:B
6 t# N% v' J4 W+ w4 g2 q( A! W$ }, P' C; h! f2 Y6 P3 j
8.已知AA是一个类,则执行语句AA a;后( )。 ^' c; v/ a0 [: u& r8 @" o
A.自动调用无参构造函数8 R; ?' I5 X# ?3 q! d7 z) B
B.自动调用有参构造函数% C0 E* E! O& f6 z/ i, f: o
C.自动调用拷贝构造函数! i' Y; g, Q1 I6 R9 n/ r7 [& x6 b
D.产生一个对象a,但不调用任何函数: k1 \6 e3 R( Q' s' a6 [: A! ^
答案:! d& n$ l* h1 I) a; f6 f
; o5 O6 v1 T- J* k
9.如果以链表作为栈的存储结构,则退栈操作时( )。' W+ |1 n; Y8 n6 [% t9 K6 p4 w
A.必须判别栈是否满0 E. v. z8 p C7 w. z! K C
B.判别栈元素的类型5 z% p6 u. h* d D3 i: ^: s
C.必须判别栈是否空9 t, J7 ^0 t% L" k$ C7 ~
D.对栈不作任何判别: a4 B" d) `$ \/ X
答案:! E) J8 c) T% R# u
7 |+ s3 U4 w% q: n2 _
10.在一个无向图中,若两顶点之间的路径长度为k,则该路径上的顶点数为( )。
0 o, s# o5 i7 ^- `A.k
/ c! a) A6 ]/ J/ bB.k+1
' X9 p" p; u* IC.k+29 U8 q2 C, e v: [; [
D.2k! p4 n* S8 N2 V D6 g% P
答案:B9 l! S1 N- c% O2 ]3 p4 @
- \. Y$ {9 K* N, T
11.下面叙述错误的是( )。
, a$ A* K" O/ m0 G3 B" u+ n0 o* |A.派生类可以使用private派生
1 H5 ^. i3 C% R- S; u1 ^5 V% W8 s$ \B.对基类成员的访问必须是无二义性的* I1 j1 ^/ [. Y4 f- Q
C.基类成员的访问能力在派生类中维持不变8 @6 j, N$ c3 |/ c0 m
D.赋值兼容规则也适用于多继承的组合
7 F# [+ L; x/ K5 {2 [. s+ U: X: m答案:7 W3 ^: {9 Y1 \: J5 C1 f$ A& r
( X( m" O) ]" j1 f
12.在一个单链表中,若将p所指结点从链表中移除,q已指向其前驱结点,则执行( )。9 [5 K: `1 n7 X. n. c* \9 V% m! Q
A.q->next=p
7 O' c6 Q B3 _& }B.q=p->next
. [9 b* C+ b( ?, ~* n% E6 ~C.q->next=p->next
6 U" ^. c9 [1 f: }/ }0 KD.p->next=q' R$ w# I5 R8 U8 ?
答案:# w+ o6 s. n8 k
8 p# Y) M* ]: J, V$ M# V) O
13.链式存储结构中数据元素之间的逻辑关系是由( )表示的。0 x# p T) R# v K+ N: V
A.非线性结构# X+ M9 [( Y# X& n. R; m9 L
B.指针
& A4 W$ @7 E2 d. l: c2 fC.存储位置
. u, u& _; g! @D.线性结构" N+ ~ n8 W+ ?+ s( L9 I/ Z8 X3 N8 a) D
答案:B
3 {) |# i! {4 ], f
% g W1 q# M Y- j. B* l3 `14.运算符delete删除一个动态对象时( )。
( U' Y" G& k4 _4 L8 {+ f6 `- x1 NA.首先为该动态对象调用构造函数,再释放其占用的内存
* Q" x- y* I; ] uB.首先释放该动态对象占用的内存,再为其调用构造函数8 S% n7 e" d% Y
C.首先为该动态对象调用析构函数,再释放其占用的内存
9 @ c# `% h- q( `D.首先释放动态对象占用的内存,再为其调用析构函数
* l' w( b( c9 j: l: j( Y答案:0 X4 b2 C; X3 o' k! ~" b
2 A" S6 Y( N& N' s5 e15.下面程序段中是内联函数的是( )。 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;}
) l# i3 I+ y. u! N: ^+ oA.init (int initx,int inity)
. e( V4 I9 p9 K+ d+ XB.getx(),gety()+ D8 J( G F" b% w1 U4 B# i
C.A和B都是' Z' G! @2 X2 Q& i8 `0 u
D.A和getx()0 j! O1 z) W g
答案:1 J4 O3 m% n& N C% o
6 k; n5 E, y$ v6 y- j16.下面对构造函数的不正确描述是( )。
0 x, `9 h& ]; I; U# V& ]5 mA.系统可以提供默认的构造函数
0 f- U: y# A2 E0 ]1 kB.构造函数可以有参数,所以可以有返回值9 L% q, h! `& f. O) o- Y
C.构造函数可以重载
0 m3 ]$ H6 Y7 m* YD.构造函数可以设置默认参数
# e# T/ E2 b! D6 C答案:B
, s; u$ [& D9 b: @0 F2 d- L. R. v2 k1 Y: @: ~5 j! |: M1 O
17.this指针是C++实现( )的一种机制。
4 I) I/ u6 }" Y6 H' D/ XA.抽象
' f t! ?. @4 z2 o J+ q3 r/ q* ]B.封装
/ S+ y' J; j6 s _, C+ i' i2 [C.继承& @7 B% w. I* O# u/ h
D.重载! v; r) a- @3 {4 q
答案:B
- C4 | j5 z- `' [5 T0 F c! ^+ o; o. }
18.进行文件操作时需要包含_ ()头文件。2 P3 C) o, I- _; a
A.iostream9 b+ Z9 u) W6 _ Q7 ^9 P( ~2 o
B.fstream
9 R) p% g" j" n0 |# C* F. |6 eC.stdio
2 Y$ Y) D, p6 |$ D( r! o- x0 T, nD.stdlib: M0 M8 ]# m# P
答案:B' D1 ?: _6 ?6 Q( L& ^' @6 P
% m. p, u! ?) u% {3 Q19.下列关于C++类的描述中错误的是( )。# L6 C% |. n& D3 \6 ]0 ]
A.类与类之间可以通过一些手段进行通信和联络
( a/ s- L$ [* a& [" z6 GB.类用于描述事物的属性和对事物的操作
) V3 z! A) w KC.类与类之间必须是平等的关系,而不能组成层次关系
1 _+ B9 a4 W0 _8 S: ~0 _" yD.类与类之间可以通过封装而具有明确的独立性
, S8 |9 t( @/ o( ~) `; q* M) c* M答案:, I2 U5 M" S8 |0 ]0 @: l
/ c# R4 |) A( \2 Y20.按照二叉树的定义,具有3个结点的二叉树,共有( )种形状。, @, u" Q; X. n2 [$ r
A.3) u, B% V# Q' ]# f+ Y
B.4
1 b+ C6 j- j6 F* f$ S+ U; jC.5
1 l4 \" c/ ^9 t2 s$ x& K% _: FD.6
3 O6 v w7 [5 z" S# R8 ?答案:; J3 m# q2 K: [& ]7 F% A
5 w6 C& H v( n& ?% e* }0 X二、多选题 (共 15 道试题,共 30 分)
7 |. |: i+ G; I. s% q" j21.下列( )是构造函数的特征。
( \0 h$ M+ _3 n7 f2 V% c BA.构造函数在创建对象时自动调用
0 ?/ C& [) q3 |7 Z, S4 JB.构造函数不可以重载
: F! u1 m/ R) S9 {; t( oC.构造函数不可以设置默认参数' j2 ]7 `5 B: Z1 V1 k
D.构造函数没有函数类型
0 `0 I: t7 O1 G& l答案
" }$ o- g: I- w/ R* p7 V7 @" @' v6 U0 L0 M8 {6 C+ h, U
22.已知Derived是Base的公有派生类,且已定义两个对象Derived d;和Base b;,则下列语句中正确的是( )。- r2 }8 Q; Q! L$ b2 b
A.d=b;
: K) ]7 P: f5 J( u$ t, ]# y( QB.b=d
/ y' e, O4 y% L' r/ T5 y" S8 bC.Derived *d=&b;
5 c( l* f/ |) D! uD.Base &b=d;( R3 K* O3 v' h
答案:BD
& t4 P! J: l$ x" a0 a5 A/ @0 h' h8 ?$ w& a
23.下面对对象成员的正确描述是( )。9 `' [, n8 V# E s w+ ]! S
A.可以在构造函数的初始化列表中给出对象成员的初始化
$ V$ c0 T5 k! M; e7 u+ uB.可以在构造函数的函数体中给出对象成员的初始化
/ Q8 V' D" B6 l y0 V& ^C.如果一个对象成员有无参构造函数,则可以省略对象成员的初始化语句
0 L c& f. r8 ^9 Z1 w6 h$ {5 U, wD.若A类中有B类对象成员,则在创建A类对象时,先执行B类的构造函数,再执行A类的构造函数
+ v. x! L6 t+ h }/ N, l答案% S" a) l5 {1 J, ?% ? s
% h: @: \/ g) g1 |* i( g g. I
24.下面对构造函数的正确描述是( )。' T1 n, Y8 L0 }: g9 B {4 j/ w
A.系统可以提供默认的构造函数1 u% l# X# u% G; e& q g
B.构造函数可以有参数,所以可以有返回值
& g, P* T! |. z# i4 fC.构造函数可以重载
; R/ L$ I% {2 u, `6 e& @4 H. WD.构造函数可以设置默认参数7 E+ C! Y4 K& M& S9 Q- z
答案
# {! s& G1 l' c5 {" q' k2 \/ Y! `
6 l Z" h0 A5 @4 b( G$ @25.已知f是以二进制读写方式打开的文件流对象,且有int型变量a,则下列选项中能正确进行文件读写操作的语句包括( )。
: O4 T2 p1 b. C$ ~9 h" K3 pA.write((char*)a, sizeof(a));1 `3 e w1 l. z6 }" t4 W
B.write((char*)&a, sizeof(a));# L* t4 ?1 x( D! {
C.read((char*)a, sizeof(a));% u/ L4 s" G" M
D.read((char*)&a, sizeof(a));( @/ x2 a1 B- c0 U3 t' T
答案:BD
# J+ }/ `8 g( N4 v9 @
, u+ |5 `+ T# c! Y' k! I8 i26.图的遍历方法主要包括:) @" L3 x! p: a: b* ], h
A.深度优先遍历6 t) j2 A( K7 r+ o4 k* U
B.广度优先遍历
! M# F) d# Y j1 g8 Z4 kC.后序遍历#逐层遍历
7 ~3 v1 B" e7 w g) h8 ^- k" W+ ?# C答案:B3 j0 c2 _: U O9 i
# G) X+ s7 o6 G( K27.在C++中,要实现动态绑定,可以使用( )调用虚函数。
# W, T4 }3 i# m" ~* M5 d T& FA.基类引用
2 E8 w6 X* b- r7 {8 p9 d$ {7 xB.派生类指针' A* ]0 Y0 `3 ^
C.基类对象 r6 ]# Y: n+ f4 U' @
D.基类指针
6 n' B1 [( q: m( c& x3 @$ Q. T1 c答案: g- S7 {' i5 }9 B/ O, n1 B4 F
/ O4 T |" z; X' s! |( J0 F+ {28.二叉树可以采用的存储方式包括:! U( |# q2 J9 j# V
A.顺序存储
8 }$ f9 j. ?; ^B.二叉链表
( `( _" F {2 ? `4 _C.三叉链表
2 t7 r H) m' Y* V" z/ JD.队列
# y: h& H% P- x! u; F* A% s% C答案:BC3 `& V: {! o( a G' g2 X9 @% j
& G0 ^6 f* I1 m: ^# W' e4 _, ]29.在C++中,不能被派生类继承的函数是( )。! K k5 R0 X% L# ~
A.成员函数% D6 u$ k3 I$ i! T( h+ P$ i
B.构造函数! W$ J* J0 A* P! D, Q) N& ?1 m4 `5 c
C.析构函数7 f: D9 Q" `" h% D# R: ]& j
D.拷贝构造函数( E5 }+ a$ n; ^2 S) `
答案:BCD
- G6 w. l% g0 @1 ^9 K) Q0 Z, }
% a' }( k2 A- k) \30.关于类和对象正确的说法包括( )。
* J6 o0 D _- i/ M& _A.类是一种类型,它封装了数据和操作4 G. \7 u1 l" @* {1 |
B.对象是类的实例5 V3 c/ \1 a. T4 d
C.一个类的对象只有一个
7 n( E& [* P! G4 tD.一个对象必属于某个类
; ` B- w' ^# X2 I! v答案:BD
, L) G+ ]7 {/ r1 P5 c$ e! V( x$ y5 v6 {: P4 W- H
31.下列关于函数模板的描述中,正确的是( )。 x' A0 ?! _8 {8 x( F
A.函数模板和普通函数重载时,函数调用会优先调用符合要求的普通函数
0 K: _8 G6 H3 @B.函数模板和普通函数重载时,函数调用会优先调用符合要求的函数模板) I9 i! g. @2 t" Y
C.函数模板的主要作用是减少可执行程序文件的尺寸5 G) E0 Q: R& h( a6 a; v! \
D.函数模板的主要作用是简化程序编写$ T! W5 A, _3 _% A
答案
, X ?: l8 W, i# s4 `* N$ f* ]" l: ^6 e% E6 G5 s; w( s
32.下列选项中,属于类型兼容特点的选项包括( )。
/ G3 o- r3 d7 O3 C. dA.可以用派生类对象给基类对象赋值* Q9 p9 f! p- k! a7 |8 N
B.可以用派生类对象地址给基类指针赋值
; k# X5 v5 g5 k, dC.可以用基类对象给派生类对象赋值
! x- a' H/ G, z' x q: R/ y/ RD.可以用基类对象初始化派生类引用8 i$ ]. ? g' r) U* R
答案:B
. _& i) N5 [- q- @; v- [
( ?) Q2 [- g1 X: L0 l+ ~; r33.下列关于拷贝构造函数的说法中,错误的是( )。" O9 ^7 d* `! g3 w, U4 T/ b
A.拷贝构造函数是可以重载! C' m5 v$ X% U
B.用一个对象给另一个对象赋值时,拷贝构造函数会被自动调用% L! U3 z4 @$ E, {2 F
C.用一个对象初始化另一个对象时,拷贝构造函数会被自动调用' Y% V1 a/ i% x* c) U- z5 ]9 H
D.创建一个对象时,有可能同时调用拷贝构造函数和其他构造函数
7 }2 a% ]: v% s4 h7 u1 q6 L答案:BD
+ I+ |6 o# S4 c9 k0 L# q3 f/ a! K3 J
34.下面描述中,正确的是( )。
/ `7 v2 G; j `. \A.虚函数是没有实现的函数5 O( D! ?4 e3 {- {3 {! V
B.纯虚函数的实现在派生类中( L$ O6 I+ [1 v7 a+ S' O5 m& S5 b
C.抽象类是有纯虚函数的类8 S- r' N8 l9 Z) b' I: M/ K
D.抽象类指针可以指向不同的派生类
0 k* d! E: I' y, t( b答案:BCD" N& ^, u; [3 ~$ A0 W. ]) _6 Z
6 k) g9 n; Y0 i+ f: L
35.已知类Circle中有一个静态数据成员s_nNum,且有变量定义语句Circle c, *pc;,则下列选项中,能给s_nNum赋值为3的语句包括( )。
) n0 h: U$ t6 _$ Q F1 c" O6 MA.Circle.s_nNum=3$ E2 ?( x/ y, J0 i9 @4 Z1 {6 N
B.Circle::s_nNum=3
+ ], o( {' [- m$ g+ DC.s_nNum=3
+ X2 N& _. l! ~3 _( JD.pc->s_nNum=36 {6 C! R" U1 D, B
答案:BCD9 Y2 y: S& B( t) @% d; l0 b
8 m# D3 m+ R8 g% d# [
三、答案来源:谋学网(www.mouxue.com) (共 15 道试题,共 30 分)$ S7 }; R0 Z h% u" b! c4 r* ?
36.边上带权的图就称为带权图。
f, z& U2 J0 M J2 }答案:正确. b: |7 B& v7 m/ G; ?# H; @) V
1 y' a0 [( Z! ]7 `$ R
37.二叉树的顺序表示法操作方便,但缺点是容易造成存储空间的浪费。
4 g* U1 k, q" s& d3 v8 E, @答案:正确
- h) N1 S e# O3 O# b8 V1 _5 W9 }6 b* r
38.根据二叉树的后序遍历序列可以确定二叉树的根结点。% U4 c1 T2 G+ D; s9 @# T) H
答案:正确: P; J8 I+ V% c* V0 o3 r
; Z/ C: }" s" e9 p' Z( r0 l39.C++语言中模板分为函数模板和类模板两种。8 w, l/ r9 |1 w1 w: b O7 C/ ^7 S) {
答案:正确
( J z( y( U1 |% t, f. D: B7 I. m% {; P6 J4 w# j, T8 X1 o) S' W
40.在线性表的顺序存储结构中,插入和删除操作时,元素移动次数与插入和删除元素的位置有关。
. C( o, x/ N# ^1 |4 U* r答案:正确% g& J6 R9 _) @& j! w: b2 j' P
" N' t# H, D. F
41.用邻接矩阵存储一个图时,所占用的存储空间大小只与图中顶点个数有关,而与图的边数无关。
# e" k. D3 d' m/ {答案:正确6 G T) ]8 M0 p0 A5 r" f3 W3 x
: ] M8 ^8 \- I42.使用指向对象的指针来访问类的成员,则必须使用的运算符是->。" B- y9 V9 h) ~4 s" X1 m, V: m1 v
答案:正确
4 A+ f$ V) X- K6 o) u+ u& P0 g
& K+ g/ b3 e. a2 A( Q9 ~43.在删除一个动态对象时,将自动调用该动态对象所属类的析构函数。
( k/ U# y( S' I4 U4 {8 \答案:正确
3 _) `* E2 Y) C1 x/ g# A# a ^
7 u+ A! ^4 z; c! r% Q5 S( I44.多数运算符可以重载,个别运算符不能,运算符重载是通过函数定义实现的。 o, s B, u$ H) K1 h- N: C) ~
答案:正确* F+ U8 R- b% H E- _
. z- M$ @1 x3 q9 Q8 `! _45.构造函数和析构函数都不能重载。
- D/ Y/ ~- F \4 a答案:错误* F1 O+ d8 a$ T! x1 ^& s7 o- J7 V$ H
1 B3 [6 U. u4 N# y- l/ x
46.二叉树的逐层遍历,是指从第1层开始依次对每层中的结点按照从左至右的顺序进行访问。& ]0 p5 x, P, o2 j. ~
答案:正确
$ W$ J4 Z* J( ?: x6 W# X7 ?4 r& |. [% w
47.线性表中的一个结点可以有多个前驱和多个后继/ B* |& _$ W% v% b. u% T. s
答案:错误 `2 o1 {. m) o. T& c) Y d
8 V: v3 J: h1 }2 u! E48.使用关闭文件函数close()关闭一个文件时,但流对象仍存在。" T3 }' E& r$ B1 c
答案:正确
- C+ }' a: a. o* l
; T- R. h$ z4 f1 }% Y8 @, B49.线性表的顺序存储结构的特点是逻辑关系上相邻的两个元素在物理位置上也相邻。
; J+ O4 }& T/ P答案:正确
) H8 g; i. B# o& p
; t2 t$ W& t. R( d- I8 t50.用邻接链表存储一个图时,边数越多,占用的存储空间越大。" G* g, P/ j" z
答案:正确: E( W1 P& R w" l, n! x7 t
& |4 k, H; z5 K6 \& n' I4 j: S& I
, v1 x. b* ?0 `5 m
3 G7 q+ d: l$ V, O7 F
* d0 }; T+ \2 f, v: m7 \' V2 N, P
- S! | Z+ B; L# r4 G9 J+ P9 T% \/ k
0 _( S( x& ~6 A, F/ y& D
# w x. ^' B1 d! l* Z% w
6 X$ H, X5 H+ |# p
, B- r" T& d5 P9 P# T
$ T/ W9 T e' o8 T* |* s& N$ h1 t2 a
|
|