while(条件表达式)
{
语句块;
}
whie后面跟上一个条件表达式,接着是要执行的语句块。如果while只跟一条语句的话,可以省略大括号;如果是要执行多条语句则需要加上大括号。
首先当程序进入到while语句中,会先对条件表达式做处理,如果表达式为真,则执行while的语句块,如果表达式为假,则跳出while语句。
让我们来看看while语句的代码吧。
#include
int main()
{
int i = 0;
while (i < 10)
{
printf("%d ", i);
i++;
}
return 0;
}
上面的代码实现了打印出0到9的数字。
i从0开始,直到 i 累加到10,跳出while循环。
如果我们没有删掉i++,结果会怎么样?
让我们来看看代码的执行效果。
结果会无限打印0,while循环就变成了死循环。
可见我们在使用while循环的时候要注意对语句进行调整,使总有一个条件能结束循环,避免死循环的出现。
想必大家已经掌握了while的用法了。
for(变量初始化;条件判断;变量调整)
{
语句块;
}
它和while类似,如果只执行一条语句就不用大括号,反之则需使用大括号。
上面使for的一般格式,有时我们会使用它的特殊形式,即除了处理条件表达式之外,我们可以省略其他的部分(变量的初始化与调整)。
例如下面的代码
for(;i==10;i++)
printf("%d",i);
for(;i==10;)
printf("%d",i);
for(i=10;i==10;)
printf("%d",i);
上面的流程图,告诉我们在进入for循环时,先进行变量的初始化(*有且仅有*只进行一次),接着开始进行条件判断(当满足条件则进入循环内部,反之则跳出循环),然后进行变量的调整,接着继续进行条件判断,直到不满足条件跳出循环为止。
由此可见条件表达式时绝对不能省略的,否则就会像上面while的死循环一样。
让我们来看看如何用for循环打印0到9的数字吧
#include
int main()
{
for (int i = 0; i < 10; i++)
{
printf("%d ", i);
}
return 0;
}
代码运行效果如下:
来尝试一下用上面的for循环的流程图分析一下吧。
首先初始化变量 i 为0,接着进行条件判断看是否小于10,如果是,则执行语句(即打印该数字),接着对变量 i 进行调整(避免出现死循环)即进行(i ++ ),然后进行条件判断,一直循环下去,直至 i 不满足小于10的条件(即循环结束,程序跳出循环)。
相信大家掌握了for 循环的基本操作了。
do
{
语句块;
}while(条件表达式);
do 后面一定要接大括号(千万不要省略,哪怕只有一条语句要执行,也不能省略)然后大括号内部写上你要执行的语句块,接着在括号旁边跟上while(条件表达式),最后一定要写上英文的分号哦!!!(别忘了分号)
可以看出do while 语句不管怎么样,都会先执行一次语句块,接着在进行条件判断,接着就如上面所说的一样,直到不满足条件跳出循环。
让我们看一下do while 语句的代码一以及运行效果吧。
#include
int main()
{
int i = 0;
do
{
printf("%d ", i);
i++;
} while (i < 10);
return 0;
}
让我们来分析一下代码吧。
首先执行语句块(即打印0),接着 i++,然后进行判断,直到不满足while的条件为止 ,循环结束。
这里先恭喜大家以及掌握了三大常用的循环语句。
首先除了格式不同之外,我们要关注两个循环语句的流程是不太一样的,while语句就是把条件表达式,变量调整,以及变量的初始化都放在各自的地方,比较分散;而for语句就是将三者放在同一个地方,这样比较方便我们修改。
不管怎么样?在面对编程的过程中,我们需要灵活地使用上面三大循环语句,不管黑猫白猫,能捉到老鼠的就是好猫。
通过上述实验,我们可以看出break会让程序跳出循环。
那问题来了,如果是有两层循环的话,会怎么办呢?
来看看下面的代码运行图吧。
没有break的情况:
有break的情况:
从上面的代码运行效果来看,break只能跳出自己所在的一层循环!!!在其他循环语句嵌套情况下也是一样的,这里就不一一举例了。
有continue 的情况:
通过上述实验我们可以看出continue 会让程序跳过continue 后面的语句,直接进入下一次的循环判断(如果满足条件则进入循环中,反之则跳出循环)
那么continue 在循环嵌套中又是怎么表现呢?
来一起看看下面得代码运行吧。
可见contiune 和break也是一样只能控制自己所在的一层循环语句。为什么这么说呢?因为如果continue 能控制两层循环的话,那应该从for(i = 0; i < 2; i++)这个循环开始并且跳过contiue后面的语句printf(“hello\n”),然而运行结果并没有这样做,因此continue 只能控制自己所在的一层循环。
break意为打破,在程序里是跳出一层循环的意思,continue 意为继续,在程序里是不继续continue 后面的语句,直接进行下一次循环判断(如果满足条件则进入循环,反之跳出循环)
goto 语句可以在实现在同一个函数内跳转到设计好的标号处。
goto 语句的使用要和跳转标号配套使用。
来看一下代码吧。
#include
int main()
{
printf("Welcome to goto !!!\n");
goto next;
printf("hello\n");
next:
printf("你好呀!\n");
return 0;
}
想必大家已经对goto 语句有所了解了,goto 语句就是让程序跳转到标号处的位置,去执行代码。(注意goto 语句和标号必须在同一个函数内部才可以哦!!!)
让我们来思考一下,break只能跳出一层循环,如果想要跳出多层循环的话就要使用多个break,这时goto 语句便大展身手,直接跳转到你想要的位置,这就是goto 语句的好处。
但是,有好便有坏,我们要辩证地看待事物。大家想一想,在我们写一个庞大地工程时,有几万行代码甚至上千万地代码,如果频繁地使用goto 语句可能会发生一些不可控的事情,可能会导致goto 语句在重新中随意乱跳,打乱程序的执行流程。
总结一下,goto 语句虽好,但是还是建议大家能尽量不去使用就不使用了。
感谢你阅读到最后,希望这篇文章能帮助到你。制作不易,如果可以,能点个赞支持一下吗?我将会在本专栏上持续推出作品~~ 点个关注,下次不迷路哦!