C语⾔是结构化的 程序设计 语⾔,结构指的是顺序结构、选择结构、循环结构,今天我们要学的是循环结构。其实想一下我们日常生活中的习惯,每天都要去做的一个事情,是否相当于一个循环呢?
C语言中循环分类: for循环while循环和do-while 循环
一、for循环
for循环是我们在写代码过程中使用最多的一个循环。
for循环的语法形式如下:
#include<stdio.h>int main(){for(表达式1;表达式2;表达式3) {//里面是执行语句 }return 0;}如果循环体想包含更多的语句,可以加上花括号。
表达式1:用于循环变量的初始化。
表达式2:用于循环结束条件的判断。
表达式3:用于循环变量的调整。
for循环的执行流程:

首先执行的是表达式1初始化循环变量,接下来执行的是表达式2,判断这个变量是否满足条件,表达式为真执行循环,表达式为假,结束循环。
表达式为真的时候,进入循环,循环里面的语句执行完之后,再去执行表达式3,调整循环变量,然后再去用表达式2进行判断,为真则执行,为假循环结束。
整个循环过程中表达式1初始化部分只被执行一次,剩下的就是在表达式2、循环、表达式3里面循环。
for循环的实践:
当我们想在屏幕上面打印1~9的数字的时候,就能用到循环。
#include<stido.h>int main(){ int i =1;for(i=1;i<10;i++) {printf("%d ",i); }return 0;}下面为打印出来的效果。

二、while循环
while循环的语法形式如下:
#include<stdio.h>int main(){ while(表达式) { 语句; }return 0;}while循环执行流程:

首先执行的是while()括号里面的判断表达式,表达式为真进入循环,表达式为假则不进入循推。环,循环结束;循环体里面的语句执行完之后再次进入while循环()里面进行判断,为真则进入表达式,为假不进入;以此类推,直到判断为假结束循环。
同理我们用while循环在屏幕上面打印我们的1~9数字。
#include<stdio.h>int main(){int i = 1;while(i<=10) {printf("%d ",i); i++; } rerurn 0;}
三、 do-while 循环
do-while循环的语法形式:
#include<stdio.h>int main(){do { 语句; }while(判断);return 0;}do-while循环的执行流程:

在do-while循环中先执行的是do花括号{ }里面的语句,然后再去while括号()里面判断是否满足条件,为真则进入循环,为假则退出循环,循环结束。
在do-while循环里面语中循环体是至少执行一次的,这是do-while与for、while循环的特殊点。
do-while循环的实例:
同理打印1~9的数字在屏幕上。
#include<stdio.h>int main(){int i =1;do {printf("%d ",i); i++; }while(i<=10);return 0;}
⼀般情况下 do while 使⽤在循环体⾄少被执⾏⼀次的场景下,所以较少⼀些。
谈完我们的循环,那么我们就要说说break与continue,这两个关键字。
break与continue语句:
在循环过程中,有些情况需要提前终止,这个过程在我们写代码中是很常见的现象。C语言里面提供了这两个关键字,是应用在循环中的。
break:作用是在这个循环过程中永久性的终止循环,只要break被执行,就会跳出循环(终止循环),然后继续向下执行。
continue:作用是跳过continue后面所以的代码。在for循环与while循环里面有所差异。
while循环中的break和continue
break:
#include<stdio.h>int main(){int i =1;while(i<10) {if(i==6) {break; }printf("%d ",i); i++; }return 0;}

当想让循环在什么条件下终止循环的时候,我们就能用我们的break语句。
continue:
#include<stdio.h>int main(){int i =1;while(i<10) {if(i==6) {continue; }printf("%d ",i); i++; }return 0;}
当i==6的时候执行continue, 会造成无线循环(死循环),因为continue将循环里后面的语句全部跳过了,无法使变量i不断增加,不断进行判断,造成死循环。
for循环中的break和continue:
break#include<stdio.h>int main(){ int i =1;for(i=1;i<10;i++) { if(i==6) {break; }printf("%d ",i); }return 0;}

其实可以看见,break在for循环内和while循环内是相同的。
continue:
#include<stido.h>int main(){ int i =1;for(i=1;i<10;i++) { if(i==6) {break; }printf("%d ",i); }return 0;}
这⾥ continue 跳过了后边的打印,来到了 i++ 的调整部分,而不是结束循环。continue跳过的是循环体内的代码。
do-while中的break和continue:
break:
#include<stdio.h>int main(){int i =1;do { if(i==6) {break; }printf("%d ",i); i++; }while(i<=10);return 0;}
do-while中的continue:
#include<stdio.h>int main(){int i =1;do { if(i==6) {continue; }printf("%d ",i); i++; }while(i<=10);return 0;}
可以看见do-while循环中这个代码加上continue变成死循环了,原因是:continue讲循环体内的代码跳过了,i++不会执行,而i会一直小于等于6,不断进行判断,造成死循环。
这三种循环能够相互嵌套。这就是循环嵌套。
简单的循环嵌套:
找出100~200之间的素数,并打印在屏幕上。
注:素数⼜称质数,只能被1和本⾝整除的数字。
#include <stdio.h>int main(){int i = 0;for(i=1;i<=100;i++) {int j =0;int flat =1;for(j =2;j<i;j++) {if(i % j == 0) { flag = 0;break; } }if(flag == 1) {printf("%d ", i); } }return 0;}
这就是简单的循环嵌套。
最后还有一种是go to 语句
go to 语句
C语⾔提供了⼀种⾮常特别的语法,就是从go to语句和跳转标号,go to语句可以实现在同一个函数内内跳转到设置好的标号处。
#include<stdio.h>int main(){ for(......) {for(......) {for(......) { go to error; } } } return 0;}error;......本来for循环用break只能跳出一重循环,但是用go to 能跳出多重循环,能跳到你想要跳到的位置。所以这种情况下用go to语句比较快捷。
好了,讲到这里我们的循环就已经全部讲完了。
谢谢大家的观看!!!
---正在不断进步的菜鸟
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。