上期讲到了分支语句,这期我们来聊聊循环语句。
在c语言中,有三种循环语句,分别是while,for,do...while,下面我会依次为大家讲解。
1. while循环
1.1 while
它的语法结构如下:
while(表达式)
语句;
那么,怎么使用呢?请看代码:
可以看到,while 下方语句被执行了15次,这是因为括号中表达式的结果为真时就会执行a++,直到a>=15才结束循环。
如果表达式结果永远为真的话,那么循环就会一直执行下去。(死循环)
1.2 流程
它的流程如下:
2. for循环
2.1 for
for(表达式1; 表达式2; 表达式3)
语句;
表达式1 ⽤于循环变量的初始化
表达式2 ⽤于循环结束条件的判断
表达式3 ⽤于循环变量的调整
for 循环可以将信息清晰的展现出来,增强代码可读性,所以它是三种循环中最常用的循环。
1.1的代码也可以用 for 循环来写:
细心的朋友可能发现了,在 while 循环中判断循环结束的表达式(a<15)在 for 循环中变为了(a<=15)才成功打印1~15。
这是为什么呢?
2.2 流程
它的流程如下:
首先,初始化a=0,再判断a是否<=15,如果是,就执行语句,再让a自增1,再进行判断。
所以,在这个过程中,初始化a=0只会执行一次,而a++则被挪到 printf 语句后了,也就是说,a++最后执行,所以才导致了这样的结果。
3. do...while循环
3.1 do...whiile
它的语法结构如下:
do
语句;
while(表达式);
1.1的代码用 do...while 完成:
3.2 流程
while 和 for 这两种循环都是先判断,条件如果满⾜就进⼊循环,执⾏循环语句,如果不满⾜就跳 出循环; ⽽ do while 循环则是先直接进⼊循环体,执⾏循环语句,然后再执⾏ while 后的判断表达式,表达式为真,就会再进⾏⼀次执行循环语句,表达式为假,则不再继续循环。
因此,无论如何 do...while 的循环语句都会执行一次,而如果 for 和 while 的判断表达式结果为假的话,会直接跳过循环语句。
4. break和continue语句
C语⾔提供了 break 和 continue 两个关键字,是应⽤到循环中的。( break 也可以用到 switch 语句中)
其中 break 的作⽤是⽤于永久地终⽌循环,只要 break 被执⾏,就会跳出循环,继续往后执⾏。
而 continue 的作⽤是跳过本次循环 continue 后边的代码,继续往后执⾏。
4.1 while循环
请看代码:
我们发现,结果只打印了1,说明 break 成功在执行下次循环前终止了循环。
当然,也可以配上 if 语句:
从结果上看,a=5的值没被打印,a=7~10的值也没被打印。
4.2 for循环
(for 循环中的 break)
(for 循环中的 continue)
但 for 循环中的 continue 和 while 循环中的有细微的差别,可以对比一下:
当我们把a++放到最后时,死循环了。
这和它们循环时的流程有关:
在 for 循环中,先判断,当a=5时跳过下方语句结束本次循环,但仍会执行a++。
而在 while 循环中,continue 直接跳过了a++,导致a永远等于5使程序死循环执行。
4.3 do...while循环
它的执行流程和 while 循环几乎没有差别,在此不进行解释。
5. 循环的嵌套
循环嵌套可以帮助我们完成更多东西,比如:做一张99乘法口诀表。
在这之中,x是第一个数,y是第二个数(即x*y=xx)。
6. goto语句
当我们学完了循环嵌套后,不可避免地会遇上这种情况:
for(...)
{
for(...)
{
for(...)
{
......
}
}
}
看着就头大,总不能每个循环都用 break 才能提前退出吧,这时我们就可以用 goto 语句了:
for(...)
{
for(...)
{
for(...)
{
if()
goto here;
}
}
}
here:
......
一步到位。
switch 语句也可以这么做:
switch(...)
{
case 0:
...
case 1:
switch(...)
{
case 0:
...
case 1:
...
default:
goto here;
}
default:
...
}
here:
......
虽然大家说 goto 语句最好不要用,但是我个人觉得 goto 语句还是挺好用的,别乱用就行。