1. 程式人生 > >運算子與迴圈語句中易錯題

運算子與迴圈語句中易錯題

1.下面程式片段輸出的是什麼( C )
int a=3, b=1;
if(a=b) {System.out.println(“a=”+a);}
A.a=1 B.a=3 C.編譯錯誤,沒有輸出 D.正常執行,但沒有輸出
解析:if(a=b)中的a和關係不是賦值的關係,而是比較的關係,所以要用“==”。

2.下列語句執行後,j 的值是(D )
int j=3, i=3;
while(–i!=i/j) j=j+2;
A. 4 B.5 C.6 D.7
解析:本題考查的運算子的運算順序, 先計算–i 為2,不等於2/3;j=5;
第二次迴圈時,–i為1,不等於1/5,j=7;
第三次迴圈時,–i為0,等於0/7,終止迴圈,j=7;
優先順序順序:一元運算子(++,–)>大於算術運算子>大於關係運算符。

3.以下程式段輸出是( C )
int i=0,j=0,a=6;
if ((++i>0) || (++j>0 )) a++ :
System.out.println(“i=”+i+” ,j=”+j+” ,a=”+a);
A.i=0,j=0,a=6 B.i=1,j=1,a=7 C.i=1,j=0,a=7 D.i=0,j=1,a=7
解析:本題考查兩個知識點,遞增與短路問題,
因為(++i>0)是正確的,所以 (++j>0 )因為被短路了,不會再計算了,
所以i的值為++1輸出1,j的值不變還是,a++為6+1為7.

4、以下程式的輸出是( B )
int x=1,y=0,a=0,b=0;
switch(x){
case 1:
switch(y){
case 0: a++;break;
case 1: b++;break;
}
case 2:
a++;break;
case 3:
a++;b++;
}
System.out.println(“a=”+a+”,b=”+b);

A.a=1, b=0 B.a=2,b=0 C.a=1, b=2 D.a=2, b=2
解析:本題為易錯題,考查的是break的用法。
x=1,執行case1 的時候,因為case1的下面沒有break;
所以在執行case1之後會執行case2.