a我考网

 找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 126|回复: 3

[程序员] 2012年软件水平考试程序员考前练习试题及答案解析(3)

[复制链接]
发表于 2012-8-2 08:51:15 | 显示全部楼层 |阅读模式
31.设 a=3,b=4执厅‘printf(”%d,%d’,(a,b)(b,a));”的输出是( )   A.3,4
2 R" ^- k6 C3 q+ P6 q8 W% Z  B.4,32 W  p) h1 I& g0 {, N& g
  C.3, 3
0 c! e5 d" J) T$ F$ P$ }/ o  D.4,4
) G) f9 K' R/ m0 y5 K7 N$ E5 V  【解析】在调用格式输出函数的语句中,其中每个格式符对应一个输出项,格式符d要求输出项内容以十进制整数形式输出。第一个输出项(a,b)是一个逗号表达式,该表达式的值是b的值,输出4。接着输出字符逗号。第二个输出项(b,a)的值是a的值,输出3。所以语句执行将输出4,3。
, L6 @$ _: ?/ x9 W. P5 f  【参考答案】C
/ x. y6 F7 G6 T  32.使用“Scanf("X=%f,y=%f",&x,&y)”,要使 X,y均为1.25,正确的输入是( )7 L: r( f" I% o4 Y4 u" A
  A.1.25,1.25
1 C  w- q: `/ G  B.1.25 1.25
, i5 p% K: ^. u1 r# F( a  C.x=1.25,y=1.258 z( R9 g" S& D1 i5 L0 y4 n& l4 J
  D.X=1.25 y=1.25
: L2 a0 J$ Z+ V4 m, |$ _8 b, _  【解析】格式输入函数的格式字符串中的字符可以分成三类:空格类字符、其它普通字符和格式转换说明。其中空格类字符用来跳过一个空格类字符序列,直至下一个非空格类字符。普通字符要求输入字符与其完全相同。格式转换说明对输入字符列按格式转换说明进行转换,得到内部值存储到对应输入项所指定的存储位置中。函数调用scanf(“x=%f,y=%f,&x,&y)以普通字符X=开头,输入时也要先输入X=。接着是一个浮点数输入格式,所有能构成一个浮点数1.25的字符序列都能满足要求。接着是普通字符列“,y=”,在输入的浮点数之后也要有字符列“,y=”。最后又是浮点数输入格式,同样所有能构成一个浮点数1.25的字符序列都能满足要求。问题给出的供选择答案中只有x=1.25,y=1.25是能满足上述要求的。所以正确选择是C。4 U9 e5 O  v; s4 }6 T
  【参考答案】C9 e- E- Q; A& T  c5 p5 o
  33.设有int i=010,j=10;则执行“printf("%d,%d\n",++i,j--);”的输出是( )
$ _9 e" I, A8 K( p/ z& p8 [; [- @  A.ll, 10; U( Y4 z/ G2 T! \3 a/ p
  B. 9,10$ N- @2 Y/ t; h0 z8 \
  C. 010,9
# y8 ~4 a, F# _* N) I' z) M4 g  D. 10, 9, T. Q  i8 r6 z4 D; y! Q$ v
  【解析】变量i和j的初值分别为八进制数010和十进制数 10,函数调用Printf(“%d,%d\n”,++i,j--)中,++i的值是变量 i增1后的值,原来值是八进制数 010,等于十进制数8,输出9。j--的值是变量j减1之前的值,输出10。格式字符申中的逗号是普通字符照原样输出。所以问题给出的格式输出函数调用将输出9,10。正确的解答是B。
! Y: o! D9 I$ P: L6 B  【参考答案】B
5 f( M: p& \2 W* c' F( Z  34.设a,b为字符型变量,执行"scanf("a=%c,b=%c",&a,&b)"后使a为'A',b为'B',从键盘上的正确输入是( ); E. u0 V+ C; w7 m6 Z4 \
  A.’A”B’% ?. D1 n3 M0 e" n7 H
  B.’A’,’B’
/ [* c0 r4 P8 g' `$ I# R4 L  C.A=A,B=B3 K# a) p/ x# X3 ^/ l
  D.a=A b=B
5 Z, ~! Z3 B, F- M+ L  【解析】函数调用scanf("c=%c,b=%c",&c,&b)中,普通字符必须按格式字符串要求照原样输入,c格式对紧接的任何字符都输入。所以实现问题的要求,输入字符列应为“a=A,b=B”。另外要特别指出,在程序中,为表示字符常量,字符前后需加单引号。但用字符格式输入字符时,在要输入字符前后不必另键人单引号。若键人单引号,则这个单引号也将作为字符被输入。正确的解答是D。
. v: M% l3 c, ]5 I! p" I  【参考答案】D
9 f  W: R& }( C" L9 e0 n  35.设X、y、Z、t均为int型变量,则执行以下语句后,t的值为( ): a6 ~& }/ B( Z9 H, n
  x=y=z=1;t=++x||++y&&++z;
/ C' m/ `# m4 k! P  A.不定值6 w- a' z: h) i
  B.21 e3 L7 r. C: e. x* D2 ]
  C.l% w# ?# n* u7 l0 W
  D.0, \0 ~+ ~: N5 b  M4 ]
  【解析】语句序列“x=y=z=l;t=++x||++y&&++z;”使变量x的值为1,变量t是赋一个逻辑表达式的值。在C语言中,由逻辑与和逻辑或构成的逻辑表达式有特别的计算规则,顺序计算各逻辑子表达式,并当一旦能得到逻辑表达式的结果时,就立即结束逻辑表达式的计算,不再计算后继逻辑子表达式。本题的逻辑表达式是两个运算分量的逻辑或,而且左运算分量++X的值为非0,立即得到逻辑或运算的结果为1,并将1赋给变量t,所以变量t的值为1。正确解答为C。! \. b4 B, I, }" t% Y% X3 S
  【参考答案】C
回复

使用道具 举报

 楼主| 发表于 2012-8-2 08:51:16 | 显示全部楼层

2012年软件水平考试程序员考前练习试题及答案解析(3)

36. 设x、y、z均为int型变量,则执行以下语句后,x、y, z的值为( )   X=1; y=0; Z=2; y++&&++Z ||++ X;
6 r$ m6 L& n  \7 l" K3 L  A.2、l、3
0 ^2 \1 N4 L) Z% `  K) u% A1 Y  B.2、0、3
! B" S( q) k8 [, r) [  C.2、l、3
0 Z' a$ F% i8 \7 Y( K# M; @. _  D.2、1、2
) S: @& @) |( a% q  【解析】语句序列“x=l;y=0;z=2; y++&&++z||++x;”先使变量x的值为 1,变量y的值为0,变量Z的值为2。由逻辑与和逻辑或构成的逻辑表达式的特别计算规则,顺序计算各逻辑子表达式,并当一旦能得到逻辑子表达式的结果时,就立即结束逻辑子表达式的计算,不再计算该逻辑子表达式。计算y++因y的值为0,使y++&&++z的结果为0,立即去计算++X,这次计算使变量y的值变成1,而变量Z的值本改变。接着计算++X,使X的值变为2。所以经上述语句执行后,X、y、Z的值依次为2、1、Z。 确解答为D。- s1 Z$ ]5 i1 {4 j- M  l( e
  【参考答案】D
0 @. P8 t! b9 n  37.假定所有变量均已正确定义,下列程序段运行后X的值是( )
% u* p, S- k$ N* C- P( g  a=b=c=0; x=35;$ @$ v1 q0 M/ I  d8 t8 ^' ^/ Q6 N2 m5 U
  if(!a)x--; else if(b);if(c)x=3;else x=4;
5 T+ T9 [/ o/ v  A.341 b5 E# A; g& \* v; v$ ]& e" e2 a
  B. 4
, N' T3 \9 y3 t  C. 355 d( i: o. ^9 |1 ^4 j+ U7 N
  D. 3. R  B+ Q0 M* }8 w6 h
  【解析】以变量 a,b,c的值均为 0,变量x的值为 35,语句:
; a! t) k* z. m8 _- f  if(!a)x--;else if(b);if(c)x=3;else x=4;
: W0 y3 G9 U2 P. h  t- A0 {  由两个证语句组成。首先执行前一个if语句“if(!a)x--;else if(b);”,因变量a的值为0,条件!a成立,执行x--使x的值变为34。接着执行后继的if语句“if(c)x=3; else X=4;”,因变量c的值为0,条件不成立而执行X=4,最终使变量X的值为4。正确解答是B。
' l# F/ r3 W2 n5 L4 t( X$ M/ n  注意前一个if语句的else部分的成分语句只有“if(b);”,这是一个单分支if语句,且其成分语句为空语句。# s1 k; R# P" O! \2 g1 S
  【参考答案】B/ h) J2 A8 j. S* u3 c0 G6 f& D3 x/ t
  38.下面的程序段所表示的数学函数关系是( )
( N2 X; g- d9 N" e2 o( q, A$ g( ^  y=-l;& |, E9 `* \$ r4 i
  if( x!= 0)if(x>0)y=l; else y=0 ;/ X9 x4 t8 Y) a* Y& V/ B3 {; x6 H
  1(x0)
, d3 C( z% F, K  o(X< 0) -l(X< 0)
. v- o- h; M/ F- C  C. y= {-1(x= 0)
$ ?$ }5 N- p! A% `  D. y={ 1(X= 0)
% A' X8 f% A( `' a  1(X> 0) 0(X> 0)/ J: I: \0 d; Z" x; K- N
  【解析】程序段首先置变量y的值为一l,接着按变量x值的不同情况重置变量y的值。重置的首要条件是x!=0,若变量x的值为0,则不再重置变量y的值,所以在X值为0情况下,y的值是-l。在变量X的值不等于0的条件下,若X的值大于0,重置变量y的值为1;若变量X的值小于0,重置变量y的值为0。所以程序段实现当变量x的值为0时,变量y的值为-1;当变量X的值大于0时,置变量y的值为1;当变量X的值小于0时,置变量y的值为0。正确解答为C。0 F6 M' ^- M3 j! c& I9 e
  【参考答案】C3 {8 r$ S# w$ s! K' U6 J
  39.下列语句中,句法错误的是(不考虑语义)( ); v  J. |' p# \( v) r; m
  A. while(x=y)5 ;6 W9 X7 y2 e1 R. ]7 A" Q8 B
  B. do x++ while(x==10) ;
% s  A! s! X  w- m# T+ B9 }3 `  C.while(0);
3 c( w! H1 {" l8 p/ D  D.do 2;while(a==b);# E6 w4 S% h% _( K* t# f: _9 A
  【解析】 while语句的一般形式是:* U4 T) Z% j) D8 o- b
  while(表达式) 语句: F+ i" @* T3 ]0 B  q  Z3 `
  这里的表达式可以是任何合理的表达式,语句可以是任何语句,包括空语句,或表达式语句。可能书写的while语句没有任何意义,如供选择的A.while(x=y)5;和C.while(0);,但这两个语句的句法没有任何错误。do-While语句的一般形式是:
) z6 [2 K3 }5 r& l  do语句while(表达式);3 J- d+ T4 r% y0 E. S# D
  其中的成分语句也可以是任何语句,但供选择答案B.do x++while(x==10) ;中的代码x++是一个表达式,不是语句,所以是错误的。正确解答是B。8 ^! s; O( ]0 F* ^
  【参考答案】B) O: N7 ~6 z- |5 O8 f6 m. Y
  40.若i、j已定义为int类型,则以下程序段中的内循环体的执行次数是( )
: U1 E: l) ?# J3 G4 Z: C3 |  for( i=5; i; i--)
  M2 h/ s2 M0 H3 J) Z0 ^) V( ^! f2 e' E; A! Z+ V: o
  for(j= 0; j
回复 支持 反对

使用道具 举报

 楼主| 发表于 2012-8-2 08:51:17 | 显示全部楼层

2012年软件水平考试程序员考前练习试题及答案解析(3)

41.假定a和b为int型变量,则执行以下语句后b的值为( )   a=1; b=10;; E. ]5 f3 Q& F
  do b-=a; a++;. v) {% O, C* Y, l, m- k

" ^# M9 Z% ^; @" h  }while
回复 支持 反对

使用道具 举报

 楼主| 发表于 2012-8-2 08:51:18 | 显示全部楼层

2012年软件水平考试程序员考前练习试题及答案解析(3)

</p>  【解析】问题所给出的程序段用goto语句构造一个循环控制结构,该循环结构的初值是让变量W的值为k的值,循环结束条件是W的情等于0,循环体是让变量W的值减1,并输出一个字符* 。上述循环控制过程用for循环可描述如下:, [# h1 E4 i- j7 f0 c/ S
  for=(w=k;W!=0; W--) printh("*");
) |. x0 ^2 `2 a/ a$ |! u  或写成:9 T; X- r% s. N" O# t$ S3 }
  for(w=k ;w;--w) printf("*");
3 A4 }- h; @* {0 ?' j6 V  若用while语句,可描述如下:
/ v+ x3 l* z: f' h0 K& g6 b  W=k;
1 H4 b) b1 y, w8 y8 n& ~  while(w--!=0)printf("*");* V- J3 f; s" D
  w++;/*在w等于0时,也执行了一次 w--,这里是对w最后减1的补尝*/5 j/ o  F; I9 J
  或更直观地写成:8 l3 z* s  ]. J+ f9 o5 i9 \- k
  W=k;
. [1 N0 K. v+ ]7 v  while(w!=0){ w--;Printf("*");}% c* j9 P" `& m7 K  j" f! R
  若用do-while语句,可描述如下:0 l! K* n4 J% q2 W
  W=k;
5 v- L( S, k# |# {% X  if(W)- T% b# D: h& [' n" ]& o1 S
  do{( x/ o/ ?0 C& z5 A. a7 K0 m
  w--; prinif("*");- _, H: ~9 b) t$ u: p
  } while(w);
8 Q/ @. z$ I3 J; t, ]" I  若写成:: h" N% R. |) b
  W=k;# k  q( r+ e% }
  do{
* _9 E& b: ^- N$ W  W--; printf("*");
: o  F# b# u# x& p% g* c# a% p9 J  } while(w!=0);$ Q! `+ o# r; ^# U. J/ j
  是不正确的,因为原代码当k的值为0时,不输出字符*,而上面的改写,当k的值为0时,将输出许许多多的字符*。所以解答应是C。, X( x  k8 h7 u0 T
  【参考答案】C0 \- J' H! g5 `* T5 B3 B& d# ^
  45. 若有下列说明,则数值为4的表达式是( )
# l3 R6 X* P8 r  int a[12]={ l,2,3,4,5,6,7,8,9,10,11,12 };. [- c, k# Q# {4 o$ D; A, |
  char c='a',d, g;  x& u: d0 D1 Y$ x2 F
  A.a[g-c]
, ^2 m4 M8 a" ]7 o7 ~! ]- o: [  B.a[4]: n, _9 m( [/ ]$ J4 r- U/ J9 H
  C.a['d'-'c']
* C6 K8 ]. A9 Q2 _7 E  D.a['d'-c]: w- W/ Y4 R& i4 \: m( A6 [
  【解析】数组元素的下标自0开始顺序编号,值为4的元素是a[3]。所以只有下标表达式的值为3的才是正确的。下标表达式g-C中的的变量g和c的值是还未被设定的,其值不确定。a[4]的值为5,下标为4是不对的。'd'-'c'的值为1,a[l]的值是2,所以也是不对的。变量c的值为'a' ,'d'-c=3,所以正确解答是D。
' S1 H$ W4 [8 Y, V  【参考答案】D
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|小黑屋|Woexam.Com ( 湘ICP备18023104号 )

GMT+8, 2024-5-18 08:26 , Processed in 0.212190 second(s), 27 queries .

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表