|
一、单选题(共 20 道试题,共 100 分。)V 1. 在C++语言中,打开一个文件就是将这个文件与一个什么建立关联( )0 a. ]+ s" R' }% H7 \$ O& p! |$ o4 s
A. 流
4 d% I9 L! r5 D# R6 eB. 类 - r* F$ R' L/ X: G$ d5 T
C. 结构; b {1 I9 b& u* Z9 z6 d! P4 P
D. .对象# Z/ w6 `# i4 s: P- g
满分:5 分
% {7 d. N& u& g" r. u- {; s% W4 h8 ~2. 以下程序运行后,输出结果是 * F+ Q1 H! B$ E. O, Z8 n) I: ~
main()
/ H, C8 {) [: _: ~ { char ch[2][5]={"693","825"},*p[2]; 2 W E$ ^' x( V! S
int i,j,s=0;
0 T1 g' g. O8 Q; M8 K: c for (i=0;i<2;i++) p[i]=ch[i];
' o% U$ |8 G0 @: L1 y8 _2 f, W for (i=0;i<2;i++) ! j# u8 I8 w2 J+ J; V$ N0 A0 p
for (j=0;p[i][j]>='0' && p[i][j]<='9';j+=2) q# Y! z2 [0 }: n0 c/ A ?
s=10*s+p[i][j]-'0'; 9 J9 S1 e; Z8 h8 G( b5 ~& T1 l( G" ]
cout<<s;
8 o5 N5 ^, r3 o7 [4 U% V5 ` }
- q$ E" B) j) Y6 BA. 63854 o. |6 K% D4 R
B. 22# ^) w1 U" D: G6 f
C. 33 ; Z" z+ u! q- |# g9 v8 l! j
D. 693825
, P* i% Z# \2 C: d( h 满分:5 分* G! l9 i. w( x3 P. d' @* V
3.
4 }1 H% M5 [2 \: _: g)下列程序的输出结果是( )
; F! Q3 _7 M, r- ^7 h' t#include <iostream>
8 a0 h% c. j. U* e+ d#include <cstring>* d4 ]0 `' T; z/ {8 z
using namespace std;
$ f: M, A& B% x( [int main(int argc, char* argv[])
8 L0 K+ ]+ U- T/ ^: e/ ]! m5 p{6 H2 W6 z" \% w* T# D
double d=3.2;
2 k3 W8 U4 N0 m int x=1.2,y;/ u6 Q) `5 O9 m j. j0 o7 I
y=(x+3.8)/5.0;
" ~ S& r; }5 V+ {6 q+ H7 C cout<<y*d<<endl;
. U( P- K1 p6 `8 R3 | return 0;& D0 \3 v3 ~. a1 R
}
* d0 d2 y; e8 I& J+ D, k4 eA. 33 U0 P+ d; {4 r
B. 3.2
, n( K/ C6 R+ K) o( Q4 f% [" VC. 0
1 X7 _! a7 L6 M0 i! R+ a+ UD. 3.07) [7 ^ B8 b B" z
满分:5 分% x! N5 z {7 D; D) K0 M
4. C++中,封装是借助于什么达到的?% ~# D0 ^% D; H
A. 结构 & I4 [" Y @4 a# ^7 E! |, }
B. 类 - d( d) o1 r- ~8 I" x2 J
C. 数组
& T9 U% p/ r2 I }D. 函数
) _/ Z7 S4 B* k* u; C p' k- @ 满分:5 分4 Z( ?' [# e- l) o$ D/ ^9 [7 q
5.
# t A b2 H# c1 h有以下程序
2 N4 _+ n$ X$ w6 k b5 I. P#include <iostream>
% I2 g, G. ~ N7 ^; i#include <cmath>' R4 @( F4 G8 O" [1 n# E
using namespace std;
/ w4 a! @* e& ]& evoid sum(int a[])! P8 _+ s- D( x6 V' ]8 \
{ a[0] = a[-1]+a[1]; }: H$ |' N u) x# k- q) d4 z: E
1 D# E, c5 @6 z
int main(int argc, char* argv[])& v" z7 z5 G; z5 D3 X$ j
{
8 P. U6 E# W4 \) ^ int a[10]={1,2,3,4,5,6,7,8,9,10};. e9 l+ z/ B5 x5 U) T. a% Y( g
sum(&a[2]);
5 K" u* @5 y( U! P9 \ cout<<a[2];
8 i' F* M r3 m6 m2 b7 Q5 S' l return 0;
: x6 d0 M) w. B6 ^1 }4 e}
* N' v8 q6 i9 v8 ?/ `( x程序运行后的输出结果是# M. q1 _) J: u7 t
2 [" s/ S6 `& t) t5 y) qA. 6
& k6 y3 `7 x8 G" F) J% O/ g5 n! B) [B. 7
# R) v' N0 f; T% w- WC. 5; L& H, G$ O7 w2 _1 x3 j
D. 8
1 M8 F& Q/ }) r5 ~0 t 满分:5 分
1 A f+ v5 u6 `5 v3 U6. 定义派生类时,若不使用关键字显式地规定采用何种继承方式,则默认方式为 t8 ?% p7 @7 J" K
A. 私有继承 ) S8 E8 b( T9 |$ @
B. 非私有继承
0 h1 b- b l E$ k5 \# R* wC. 保护继承
* o8 w, v( B' H( T0 y; C5 |D. 公有继承. k* d& y7 p( Y) j! Y8 \
满分:5 分; c" O4 x) B3 |; ^; e
7.
# t4 D+ P3 k2 I3 ^! m& x% J( D* v有以下程序' _7 N Z3 u7 N3 n; T, b2 Z8 M7 E* v
main()! s; u. A$ _! e$ P! |
{ char p[]={'a','b','c'}, q[]="abc";
1 c8 a$ X% a2 P- h5 t printf("%d %d\n",sizeof(p),sizeof(q));
1 o2 m& f9 b6 c" i) T8 m0 [+ M};& D$ m/ l; @9 M' J/ B: L
程序运行后的输出结果是
( S |* D+ p- _1 I: s1 RA. 4 4 # V3 ?% V" U" q- V
B. 3 3 8 { _- `0 i( m0 e! L
C. 3 4 ' G" U3 u6 O5 \
D. 4 3% ~2 x( v8 b7 k5 T: H' X# n
满分:5 分- Y1 S4 Q: z" F$ E6 W# j
8.
( I# `' U( ^5 {, [如下代码的运行结果为6 V$ X$ X; {/ N) A5 k
}8 X! O: A* g0 b. ]* Y/ O) ^/ r. w: F#include <iostream>, i: c2 E, e# ~8 v, u
#include <iomanip>" z: c. l2 n+ b, R4 ~+ E& W
#include <fstream>
, ?; w2 Y& ]' ]1 p7 P, i1 X$ dusing namespace std;" M2 Y- ?7 x& j: i
class Base {8 Q' @5 n/ A6 P$ Y- }
protected:
) n4 i$ T0 W+ H Base( ){ cout<<'A'; }# s% q) V; q: M# e: q3 j
Base(char c){ cout<<c;}" D- J. V% h3 ^% f! O' n3 }" o
};
& E; W3 A8 u7 F9 P4 _( C6 iclass Derived: public Base{
6 i; X, N) I. E" U0 gpublic:! n0 H( K9 l0 q5 k! O- e7 l' s
Derived( char c ){ cout<<c;}9 S/ N% ?: Z Y% y8 P
};
( m3 r! Q1 o+ @9 z7 U; e& U4 v- x! g( [/ M) n
int main(int argc, char* argv[])
S: G, x; ^& ^0 S2 B{9 v* ~: a4 f @6 H5 n
Derived d1('B');
v; f8 Y3 M* c- F! _% O, c Base &base = d1;3 P* ` e+ b6 ^! j# R2 q
return 0;
% \5 y4 T2 a8 \- N5 [2 ^( c3 G8 n- Q3 R5 u
" d; l. m6 V O7 o0 }
1 {) D" w7 O3 M9 ~0 p
A. B+ A K6 x" V, g% U
B. BA
. u4 C7 z3 t) |; ]2 h0 Q6 WC. AB
& {- Y$ b$ H( z, E4 a- CD. BB8 S5 f0 Z8 j0 n! ~
满分:5 分
+ e2 S- U* |4 j# r8 N2 Y, W9. 若有定义: float x=1.5; int a=1,b=3,c=2; 则正确的switch语句是
- m' K# I2 M" E6 B0 PA. switch(x) { case 1.0: printf("*\n");case 2.0: printf("**\n");}
: F' r6 o4 t! Z9 ]/ \B. switch((int)x); { case 1: printf("*\n"); case 2: printf("**\n");
: ?( M. p6 P) B2 j y9 ?: TC. switch(a+b) { case 1: printf("*\n"); case 2+1: printf("**\n");}5 x; Q+ w0 E, G3 b- l
D. switch(a+b) { case 1: printf("*\n");case c: printf("**\n");}) H, u2 p; [+ M7 k7 i5 _! @0 v
满分:5 分
) u9 |9 B* ?4 t, w4 n3 J0 u7 \10. 对类成员访问权限的控制,是通过设置成员的访问控制属性实现的,下列不是访问控制属性的是
L( ^0 S, ^& ^: fA. 公有类型
9 ]/ X& c6 h2 D% t! F! F) B* {B. 私有类型
. ^. j* z/ b, OC. 保护类型3 q4 H2 n" `1 b
D. 友元类型
( M4 h/ j( p! S- Y i& R8 L 满分:5 分
; Q/ e, H, J; F2 D11. 下列关于运算符重载不正确的是
9 O, r- s' U9 ~. Y0 L: {$ P QA. 运算符重载不能改变运算符的操作数个数; v$ Z1 O' Z. u5 N3 {/ h/ n+ b
B. 运算符重载不能改变运算符的优先级
" A* y4 c) O) U8 Z! ~5 R xC. 运算符重载不能改变运算符的结合性+ }3 L/ _9 r2 D2 u9 v; b. M+ N* e0 I% t
D. 运算符重载能改变对预定义类型数据的操作方式
$ N% c% S9 e! N; Z0 G% E5 K1 U 满分:5 分
# S) \1 h6 a; {12. 设 int x=1, y=1; 表达式(!x||y--)的值是 9 c# `1 p4 V& q W4 E) d
A. 0" Q7 D+ [ M3 y& d" q3 @" c0 e t
B. 1/ L, i: s- V7 h6 u
C. 2& L7 \/ g! v9 @" d3 }
D. -1
4 F* {: x/ N- ^6 j 满分:5 分
8 W2 O# r" N6 Z1 d9 ]13.
' S( c I: D0 U下程序的输出结果是( )0 ^- L& ]' L! n, @
#include <iostream>" G( {* N* u! R9 Y; x
using namespace std;/ t4 y, H, k' r8 Y
int f()4 a. w* [, F2 D! p/ ?
{
9 p8 b, I, A! _4 u7 X) X static int i=0;
* O3 @9 o: `/ ?( w* ` E$ I. _- v int s=1;, m) [- r1 z2 A, z6 g: r; u! a
s+=i;i++;
" B$ [8 n* l8 Q4 @ @& c# j1 ] return s;- [. [& _/ c* C; S7 s# P
}- C* F( R$ W: K1 L% ?
( J0 r( m: J% d1 ?7 Wint main(int argc, char* argv[])
7 r4 ]! G* A5 o{# d# S4 W/ ~$ T: l# I- F, ^- }
int i,a=0;
/ L+ w' w% }, D/ g9 N: v V for(i=0;i<5;i++)a+=f();
* j2 X* A4 w# \$ D" r cout<<a;/ e0 G* @+ f. [; ^1 Y: M
return 0;5 c! S$ N& S8 p
}
" P: a8 \6 y! h5 f1 U# h' O
\: Y) ?+ k/ C2 k9 D& E A! SA. 5# M. n" h0 O: M* o: ?
B. 02 z) ~9 m" S/ |
C. 15
! D6 S( m6 @# l* X* qD. 25* g' U# s2 H- c J4 o0 J
满分:5 分0 e, L$ v3 O& o" r) D
14. 在C++语言中,函数返回值的类型最终取决于
$ ?) ]% X, }/ M, D$ HA. 函数定义时在函数首部所说明的函数类型/ G+ A* R" v0 y( _. N
B. return语句中表达式值的类型8 |- s+ y1 [& Q( R& B# _; l' L8 V- N
C. 调用函数时主调函数所传递的实参类型
9 _ p' h& J% ^7 |* z1 qD. 函数定义时形参的类型
: b6 L" H7 J9 E% O 满分:5 分
+ M' o# ~$ }4 I* G- V9 w! @# V0 E15. 下面关于虚函数的描述,错误的是
' c" h2 V$ Q" ?: @2 @A. 在成员函数声明的前面加上virtual修饰,就可把该函数声明为虚函数1 Y+ U3 N4 b0 _* w* }
B. 基类中说明了虚函数后,派生类中对应的函数也必须说明为虚函数
; C& V7 }7 [+ x5 N) b; ^C.
8 f; F0 u& E" B$ y3 _5 M虚函数可以是另一个类的友元函数,但不能是静态成员函数. s+ N) [' R6 O: x) I J$ R' K, _
. U' _* f( X3 ~( p1 j
D. 基类中说明的纯虚函数在其任何派生类中都必须实现4 y( \6 h* @: D( S2 P$ {
满分:5 分 b; h% G I" u) _ w
16. 设有如下的变量定义:
; U6 X) F: D% i5 B- o1 a int i =8,k ,a,b ;
$ @9 X5 O& s7 K& v4 i unsigned long w=5; + s* x) w0 o* a5 t' E
double x=1.42, y=5.2;
* q* B+ _5 S6 M% K& u; {8 u3 E则以下不符合C++语言语法的表达式是
0 k- H8 J' f: U: f1 ^; j% N% VA. a+=a-=(b=4)*(a=3)% _ D; w6 M \0 r6 l) K- p
B. x%(-3) & g! Q8 ?4 O6 F% {9 o ~- R) F
C. a=a*3=2 - R% u: e1 w' v3 \; p' H. u) X
D. y=float(i) 3 h+ t- ]' @8 l9 V) s
满分:5 分
* S. W$ i1 w7 S3 i* l8 k2 O17. 下列关于C++关键字的说法中正确的是
' J$ l$ p: d/ E4 g1 [3 YA. 关键字是用户为程序中各种需要命名的“元素”所起的名字' n/ [* U; Y) D0 l$ o4 I
B. 关键字是对程序中的数据进行操作的一类单词
, @7 e/ \9 x( P0 B0 s0 |C. 关键字是在程序中起分割内容和界定范围作用的一类单词
9 B9 J3 S( B& q& O6 d( ED. 关键字是C++中预先定义并实现一定功能的一类单词
' J" @. ~! ]* t4 j" {; Y# G 满分:5 分
- _ D2 z! S( i' W1 U# X; M- N( H; y* ^18. 以下关键字不能用来声明类的访问权限的是
' v( S U! ?. o5 S5 x1 Q- iA. public
! G" J8 ]) P1 T# ?' wB. static 3 ]1 M$ Q u' D+ G6 q) ^1 s9 H
C. protected 9 G$ w8 x/ k4 g/ z3 [- e* B
D. private
, D( B" a% p+ _& G+ m 满分:5 分
3 f+ j, J5 B( g% k5 o- i8 F5 x19. 下列有关内联函数的叙述中,正确的是
) J. J3 N& U+ t% KA. 内联函数在调用时发生控制转移# u8 ^0 A' e. j' s' k
B. 内联函数必须通过关键字 inline 来定义
9 R% n& H4 P# g( F5 o% C- u5 d: FC. 内联函数是通过编译器来实现的
4 K6 u' S+ v& \" U: H! w: kD. 内联函数体的最后一条语句必须是 rennin 语句
# ?+ o- p6 X0 x( y 满分:5 分) ^* Y* @- C; o$ U
20. 在一个抽象类中,一定包含有3 N* H% t s9 z3 j; F# B1 {: w
A. 虚函数 % E( Z% f0 T) s" A5 {4 L8 g8 ~& u
B. 纯虚函数
' E( r( f, S) A2 HC. 模板函数
4 d4 v, Z" Q: [( Y: Q9 ?: y0 WD. 重载函数: r; ~" C, d, ]( L& z/ ?# c% [
满分:5 分
. U4 _* @( W" q. }2 K6 ?
0 e* E: d& l) ~3 H2 b$ e( ~9 R |
|