++X的值为非0,立即得到逻辑或运算的结果为1,并将1赋给变量t,所以变量t的值为1。正确解答为C。 【参考答案】C
36. 设x、y、z均为int型变量,则执行以下语句后,x、y, z的值为( ) X=1; y=0; Z=2; y++&&++Z ||++ X; A.2、l、3 B.2、0、3 C.2、l、3 D.2、1、2
【解析】语句序列“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。 【参考答案】D
37.假定所有变量均已正确定义,下列程序段运行后X的值是( ) a=b=c=0; x=35; if(!a)x--; else if(b);if(c)x=3;else x=4; A.34 B. 4 C. 35 D. 3
【解析】以变量 a,b,c的值均为 0,变量x的值为 35,语句: if(!a)x--;else if(b);if(c)x=3;else x=4; 由两个证语句组成。首先执行前一个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。 注意前一个if语句的else部分的成分语句只有“if(b);”,这是一个单分支if语句,且其成分语句为空语句。 【参考答案】B
38.下面的程序段所表示的数学函数关系是( ) y=-l; if( x!= 0)if(x>0)y=l; else y=0 ; 1(x<0) 1(x<0) A. y= { 0(x= 0) B. y={-l(X=0) 1(X>0) 0(X>0) o(X< 0) -l(X< 0) C. y= {-1(x= 0) D. y={ 1(X= 0) 1(X> 0) 0(X> 0)
【解析】程序段首先置变量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。 【参考答案】C
39.下列语句中,句法错误的是(不考虑语义)( ) A. while(x=y)5 ; B. do x++ while(x==10) ; C.while(0); D.do 2;while(a==b);
【解析】 while语句的一般形式是: while(表达式) 语句 这里的表达式可以是任何合理的表达式,语句可以是任何语句,包括空语句,或表达式语句。可能书写的while语句没有任何意义,如供选择的A.while(x=y)5;和C.while(0);,但这两个语句的句法没有任何错误。do-While语句的一般形式是: do语句while(表达式); 其中的成分语句也可以是任何语句,但供选择答案B.do x++while(x==10) ;中的代码x++是一个表达式,不是语句,所以是错误的。正确解答是B。 【参考答案】B |