高手看下!谢谢!

来源:百度知道 编辑:UC知道 时间:2024/09/28 10:09:09
int a=5;
while(a--);
printf("%d",a);
运行结果为-1,
int a=10,y=0;
do{
a+=2;
y+=a;
if(y>50) break;
}while(a=14);
结果:a=16,y=60
第一个能想明白,但不是很清晰,第二个根本就想不明白,高手指点一下啊.详细一点儿,谢谢了!!!

第一个:while循环条件只要为假的时候就退出;用数值表示,0是假,除0的数都为真;
看循环:
第1次:5 然后a--,a就等于4
第2次:4 然后a--,a就等于3
...........
第5次:0(条件不满足,退出循环)然后a--,a就等于-1

第二条,我就把循环过程给你讲一下吧
此循环执行了4次,然后从满足if(y>50) break;后退出循环

第一次 a=12,b=12
由于在while有个赋值运算a=14,所以后面a都为14+2;
第二次 a=16,b=16+12
第三次 a=16,b=28+16
第四次 a=16,b=44+16然后退出

sdsad

抓住要点就可以了
1、a--做两个事情,a)把a的值减一。b)返回a没有减一前的值。
2、注意while里面的逻辑取值是a=14而不是a==14。赋值表达式总是返回真值,也就是这个循环只有y>50的时候才会跳出。

第二个是因为要到y>50才会跳出循环循环后没不会在运行a=14前一次a=14在do 下面有一步a+=2所以a是16y也就是运算到大于50时跳出来
所以是a=14,y=60
第一个是因为while(x)是在x不等于1时跳出,不为0就是1。当a=0时跳出但是还是要运行a--所以a 就是-1了。

第一个程序里,当a--不为假,即不等于0时,都一直执行直到a--为0;
第二个程序里,不时while(a==14),而是while(a=14),不是判断a是否
等于14,而是把14赋给a ,所以while(a=14)永远成立,直到do中的y
大于50时跳出循环,
第一次循环后a=12; y=12;
第二次循环后a=14; y=26;
第三次循环后a=16; y=42;
第四次循环后a=18; y=60;

程序1
while循环条件只要为假的时候就退出,0假,其余的数都为真;
第1次循环:5经过a--,a=4
第2次:4经过a--,a=3