第1个回答 2012-08-08
第一次执行 while(y--!=-1) 时,由于 y=2,所以括号内的表达式相当于:(2!=-1) 为真,这时,y 的值为 1。接着执行 do{a*=y;a++;},a=a*y=1*2=2;a++ 后,a=3; 然后进入 while(y--); 语句进行判断,(1) 为真,循环l转到 do 继续执行,这时 y=0;执行 do-while 循环,a*=y=3*0=0;a++后,a=1;再次进入 while(y--); 语句,(0) 为假,跳出 do-while 循环,这时 y=-1;返回到上一个 while 循环,判断条件 (y--!=-1) ,相当于 (-1!=-1) ,条件为假,跳出循环,这时,y=-2; 以后就打印结果:
1,-2
第2个回答 2012-08-08
main()
{ int y,a;
y=2,a=1;
while(y--!=-1) //y先自减1,和 -1 比较是否相等,不相等进入循环体,否则执行下面的printf
{
do{ //不比较,直接执行循环体
a*=y;
a++;
}while(y--); //循环体执行完成后,看 y 是否大于 0, 大于继续执行 do 循环体内语句。否则推出从新执行外层 while 条件 即 y--!= -1
}
printf("%d,%d",a,y);}
如果第一个while再不成立,不执行do,因为do 是第一个while 的循环体内语句。而执行 printf本回答被提问者和网友采纳
第3个回答 2012-08-08
while与do while的区别是while先判断为真则执行大括号里面的,为假则退出循环。do while是先执行大括号里面的再判断,如果为真,继续执行循环再判断。如果为假,则退出循环
第4个回答 2012-08-08
先判断第一个是否满足,满足条件执行里边的程序,再判断第二个是不是满足?不要着急,慢慢来