一. 循环语句具体解析
什么是循环语句,分别又有哪些?
以上图片的例子就叫循环,也就是说满足某个条件就进入循环语句直至该条件不再满足就跳出循环。
循环语句通常分为以下三类:
接下来我们逐一介绍。
1.while循环
在我们之前的介绍中相信你已经掌握了,if语句:
当条件满足的情况下,if语句后的语句执行,否则不执行。
但是这个语句只会执行一次。
由于我们发现生活中很多的实际的例子是:同一件事情我们需要完成很多次。
那我们怎么做呢?
C语言中给我们引入了: while 语句,可以实现循环。
语法结构
//while 语法结构 while(表达式) 循环语句;
while语句执行流程
图中expr表条件判断,如果!=0(为真)就进入循环执行循环中的stmt,执行完或者使用continue跳出该次循环后进入下一次循环继续判断此时是否为真,如果此刻条件==0(为假)或者在上次循环中用break跳出循环,那么此时循环停止,执行循环后的语句。
举一个简单的例子
int main() { int i = 1; while(i<=10) { printf("%d ", i); i = i+1; } return 0; }
上面代码的结果是在屏幕上打印1-10的数,我在这里想让大家注意的地方是:
i = i+1;
在通常情况下我们使用循环语句时,得让它的条件朝着不满足循环条件的方向发生变化,否则就一直跳不出循环语句,陷入死循环。
while语句中的break和continue
了解了while循环的基本用法,我们来聊聊循环语句中会多次出现的break与continue
break
还是引例来说明:
//break 代码实例 #include <stdio.h> int main() { int i = 1; while (i <= 10) { if (i == 5) { break; } printf("%d ", i); i = i + 1; } return 0; }
这段代码的输入结果是什么?
当i==5时,就已经通过break跳出该循环了,因此只打印前面四个数
总结:
break在while循环中的作用:
其实在循环中只要遇到break,就停止后期的所有的循环,直接终止循环。
所以:while中的break是用于永久终止循环的。
continue
//continue 代码实例1 #include <stdio.h> int main() { int i = 1; while(i<=10) { if(i == 5) continue; printf("%d ", i); i = i+1; } return 0; }
虽然从结果上看,打印的依然是1 2 3 4,但是两者现在处于的状态确是截然不同的:
对比两个结果图我们可以发现,用break时,循环已经停止了,而使用continue时,光标仍然在闪烁说明此时循环压根没停止,陷入了死循环。
continue的作用是跳过此次循环continue下面的部分直接进入下次循环,由于i=i+1在continue下面未被执行,此时i还是等于5满足循环条件并且一直不会变化,这时程序就进入了死循环。
总结:
continue在while循环中的作用就是:
continue是用于终止本次循环的,也就是本次循环中continue后边的代码不会再执行,
而是直接跳转到while语句的判断部分。进行下一次循环的入口判断。
2.for循环
for循环也是我们常用的一种循环语句
语法
for(表达式1; 表达式2; 表达式3)
循环语句;
表达式1为初始化部分,用于初始化循环变量的。
表达式2为条件判断部分,用于判断循环时候终止。
表达式3为调整部分,用于循环条件的调整。
举个实际应用的问题来说明:
使用for循环 在屏幕上打印1-10的数字。
#include <stdio.h> int main() { int i = 0; //for(i=1/*初始化*/; i<=10/*判断部分*/; i++/*调整部分*/) for (i = 1; i <= 10; i++) { printf("%d ", i); } return 0; }
for循环的执行流程
图中expr1表示初始化变量,expr2表示判断循环条件,expr3表示调整变量,stmt表示f执行or中的代码
我们来对比以下for循环与while循环:
int i = 0; //实现相同的功能,使用while i=1;//初始化部分 while(i<=10)//判断部分 { printf("hehe\n"); i = i+1;//调整部分 } //实现相同的功能,使用for for(i=1; i<=10; i++) { printf("hehe\n"); }
通过两者的对比我们可以发现:
在while循环中依然存在循环的三个必须条件,但是由于风格的问题使得三个部分很可能偏离较远,这样查找修改就不够集中和方便。所以,for循环的风格更胜一筹;for循环使用的频率也最高。