一个C语言程序问题,看晕了,求大神详解

#include<stdio.h>
main()
{ int x=1,y=1;
while(y<=5)
{if(x>=10)break;
if(x%2==0)
{ x+=5;continue;}
x-=3; y++;
}

printf("%d,%d",x,y);
}
为何结果是6,6

while(y<=5){
    if(x>=10)break;   //   <-----   1
    if(x%2==0){ x+=5;continue;}   //   <----- 2
    x-=3; y++; //      <----- 3
}

循环开始,x=1,y=1

第一次循环: 条件1不成立,不会break。条件2不成立,执行3,x=-2, y=2;

第二次循环: 条件1不成立。条件2成立,x=3。执行continue,忽略语句3,执行下个循环。

第三次循环: 条件1不成立。条件2不成立,执行3,x=0, y=3

第四次循环: 条件1不成立。条件2成立,x=5。执行continue。忽略3,执行下一个循环。

第五次循环: 条件1不成立。条件2不成立,执行3,x=2, y=4

第六次循环: 条件1不成立。条件2成立,x=7。执行contine。 忽略3,执行下一个循环。

第七次循环: 条件1不成立。条件2不成立。执行3,x=4, y=5

第八次循环: 条件1不成立。条件2成立,x=9。执行continue。忽略3,执行下一个循环。

第九次循环: 条件1不成立。条件2不成立。x=6, y=6。

第十次循环: y<=5不成立,循环结束。

温馨提示:答案为网友推荐,仅供参考
第1个回答  2015-08-29
开始,x、y=1,while(y<=5)成立,第一个if明显不成立,第二个if的意思是x是否是2的倍数,也不成立,所以x-=3就是x=x-3就是-2,y++等于2。
回到第一个if,不成立,第二个if成立,x+=5就是x=x+5等于三,continue表示跳过下面的语句回到while,此时y还是2.到第一个if,不成立。
然后就是第二个if,不成立,继续下面,x=0,y=3。
循环,x=5,y=3.
循环,x=2,y=4.
循环,x=7,y=4.
循环,x=4,y=5.
循环,x=9,y=5.
循环,x=6,y=6,跳出while,输出。
相似回答