我在上个帖子里已经介绍完了分支结构,现在来简单介绍一下循环结构,在c语言我们通常会使用for、while、do while来实现循环结构。
目录
一、while循环
while语句的循环结构和if的语句非常相似
1.语法形式:
if(表达式)
语句
while(表达式)
语句;//如果循环体想要包含更多的语句,可以加上大括号
最大的区别其实在于:while语句可以实现循环效果。
2.while语句的执行流程
首先先执行判断表达式,如果表达式的值为0,循环直接结束;如果表达式的值不为0,则执行循环语句,语句执行完后要继续判断,看是否进行下一次判断。
二、for循环
for循环是三种循环中使用最多的
2.1 循环形式
for(表达式1;表达式2;表达式3)
语句//如果循环体想要包含更多的语句可以加上大括号
表达式1:用于循环变量的初始化
表达式2:用于循环结束条件的判断
表达式3:用于循环变量的调整
2.2 for循环的执行流程
首先执行表达式1 初始化循环变量,接下来就是执行表达式2的判断部分,表达式2的结果如果==0,则循环结束;表达式2的结果如果!=0则继续执行循环语句,循环语句执行完后,再去执行表达式3,调整循环变量,然后再去表达式2的地方执行判断,表达式2的结果是否为0,决定循环是否继续。
在整个循环过程中,表达式1初始化部分只被执行1次,剩下的就是表达式2、循环语句、表达式3在循环。
三、do-while循环
在循环语句中
3.1语法形式
do
语句;
while(表达式);
与while和for这两种循环有些不同的是,前面两种循环都是先判断,条件如果满足就进入循环,执行循环语句,如果不满足就跳出循环;
而do-while则是先直接进入循环体,执行循环语句,然后再执行while后的判断表达式,表达式为真,就进入下一次循环,表达式为假,则终止循环。
3.2 do-while循环的执行流程
在do-while循环中先执行图上的“语句”,执行完语句,再去执行“判断表达式”,判断表达式的结果是!=0,则继续循环,执行循环语句;判断表达式的结果==0,则循环结束。
注意:根据do-while的执行流程可以看出来,在do-while语句中循环体至少执行一次,这里也是do-while循环比较特殊的地方。
四、break和continue语句
在循环执行的过程中,如果某些状况发生的时候,需要提前终止循环。在c语言中提供了break和continue两个关键字,来达到终止循环的目的。
1、while循环中的break和continue
break的作用是永久的终止循环,只要break被执行,break外的第一层循环就终止了。
所以以后如果想在某种条件下终止循环,break就可以实现。
continue可以跳过某一次循环continue后面的代码,直接到循环的判断部分,进行下一次循环的
断。但如果循环的调整是在continue后面的话,可以会造成死循环。
2、for循环中的break和continue
与while循环中的break一样,for循环中的break也是终止循环,无论循环还需要循环多少次,只要执行到了break,循环就彻底终止。
continue的作用是跳过本次循环中continue后面的代码,直接去到循环的调整部分。所以未来当某个条件发生的时候,本次循环无需再执行后续某些操作的时候,continue就可以实现。
3、do-while循环中的break和continue
do-while语句中的break和continue的作用和while循环一摸一样。
(大家可以自行分别测试,体会他们的作用)
五、goto语句
在c语言中提供了一种特别的语法,就是goto语句和跳转标号,goto语句可以实现在同一个函数内跳转到设置好的标号处。在多层循环的代码中,如果想快速跳出,使用goto非常方便。
但是如果goto语句使用不当,就会导致在函数内部随意乱跳转,打乱程序的执行流程,所以大家使用的时候一定小心谨慎。
for(...)
{
for(...)
{
for(...)
{
if(disaster)
goto error;
}
}
}
error;
在这个例子中,for循环想提前退出要使用break,一个break只能跳出一层for循环,如果3层循环嵌套就要三个break才能跳出循环,所以在这种情况下我们使用goto语句就会更加的快捷。