被一道选择题难倒了

9.假定a和b为整型变量,则执行下述语句组后,b的值为( A ) 

          a=1; 
       b=10; 
       do 
       { 
           b -= a;
            a++; 
       } while (b--<0); 

A)8 C)-1 
B)-2  D)9

阅读 2.9k
5 个回答

这是一个智商题,while的是b小于0,所以循环只执行一次,减一次a,减一次1,所以是8

呵呵,这有点象脑筋急转弯。
while的条件从一开始就不满足,它唯一的作用就是b--,给了减了个1.
因此,答案很显然是b减了 两次1,为8.
容易把循环条件看反。

这个问题其实是考的do{}while()的用法,首先会先执行do内部的代码,然后再判断while条件,所以先执行b-=a,此时b=9,然后执行while,b--,不满足<0的条件,结束循环。此时b的值为8

关键理解:do{}while(条件);循环
用法为:先执行函数块,再判断条件,满足即执行。不是一般理解的“直到条件停止”

这种属于题目错误,直接无视好了。

在工业编程里,出现b -= a,或者while (b--<0)这种编码风格,轻则严重警告,重则直接开除。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进