main(){
int n,m;
n=5;m=1;while(m<=n)
m*=2;
printf("%d\n",m);}为什么答案是8
while循环如下:
第一步:1<=5,m=1*2=2;
第二步:2<=5,m=2*2=4;
第三步:4<=5,m=4*2=8;
第四步:8>5,不小于n=5,因此,while循环结束。
最后得到m=8.
楼主有不明白的地方可以继续问哦。追问
第一步:1<=5,m=1*2=2;
第二步:2<=5,m=2*2=4;
第三步:4<=5,m=4*2=8;
第四步:8>5,不小于n=5,因此,while循环结束。
最后得到m=8.
楼主有不明白的地方可以继续问哦。追问
循环完一次后要把值带到表达式中进行检验对么
追答对的,循环完以后,m的值变了,所以要带到表达式中再去检验。
温馨提示:答案为网友推荐,仅供参考
第1个回答 2013-01-26
m=1时,m<=n成立;执行m*=2;所以m=2;
m=2时,m<=n成立,执行m*=2;所以m=4;
m=4时,m<=n成立,执行m*=2,所以m=8;
m=8时,m<=n不成立,循环结束。
输出8.
m=2时,m<=n成立,执行m*=2;所以m=4;
m=4时,m<=n成立,执行m*=2,所以m=8;
m=8时,m<=n不成立,循环结束。
输出8.
第2个回答 2013-01-26
第一次m *= 2,此时 m = 2,m <=n 成立,然后在执行m *= 2,此时m = 4,m <= n同样成立,再执行m *= 2,此时m = 8,m <= n不成立,退出while循环,所以m = 8
第3个回答 2013-01-26
m值只变化了4次1,2,4,8,当m等于8时就不在循环了,不符合m<=n了,所以答案就是8了。while 循环是先判断,符合条件就执行循环语句,不符合就退出循环,执行循环外的语句。