帮我看看这道循环,好难

来源:百度知道 编辑:UC知道 时间:2024/06/17 05:41:14
Void main()

{

int y=1,x=1;

for(;y<=50;y++)

{

if(x==10)

{

break;

}

if(x%2==1)

{

x+=3;

continue;

x=10;

}

x+=3;

}

}

求最后Y的值,答案是4,我怎么也想不出来·····
x=10;//为什么这个语句永远不会被执行呢?

#include "stdio.h"
void main()
{
int y=1,x=1;
for(;y<=50;y++)
{
if(x==10)
break;
if(x%2==1)
{
x+=3;
continue;
x=10;//这个语句永远不会被执行
}
x+=3;
}
}
//第一次循环,执行if语句的x+=3;以后就继续执行下一个循环,此时y=2;
//第二次循环,if条件不成立,执行if后面的语句x+=3;
//此时x=7,y=3;
////第三次循环,执行if语句的x+=3;以后,x=10,y=4;退出循环

- -看得我崩溃

你if里面定义的是如果x=10,那么break;就是如果x=10的话就跳出循环了``怎么去执行啊```

x=10前面有个 continue啊 而且是同个if下的 就是说想要执行 x=10的话一定得执行continue 那么x=10就一定不会被执行

x=10前面有个continue,如果前面的(if(x%2==1)是对的,它在(x+=3;)就跳出“本次”循环去了,当然如果前面的(if(x%2==1)是错误的,后面的自然不会被执行

其实我想另楼主困惑的地方肯定就是这个CONTINUE了,你只要理解这个保留字的用法就可以。
CONTINUE 和 BREAK这两个词在循环中经常看到,前者是无条件的进入下一次循环,就如上面说的,当函执行到CONTINUE时,后面的剩下的如X=10等等就不再执行。直接进入y++后的那次循环。
而BREAK是无条件终止循环。只要程序运行到有BREAK的地方,不管前面的条件多么的适合,也对不起,此路不通了,请跳出循环。