运算符与循环语句中易错题

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.

猜你喜欢

转载自blog.csdn.net/wyq188945/article/details/83380605