目录
什么是循环
while循环
do while循环
for循环
循环结构中的break与continue
break
continue
goto语句
文章导读
本篇文章主要内容为学习C语言中的循环结构
,并掌握while
、do while
、for
三种形式的循环,并认识关键字break
、continue
以及goto
语句。
正文
什么是循环
什么是循环?简单定义,循环就是不断地重复做一件事情
。在一段程序中,同样也能实现循环。C语言为我们提供了三个关键字来实现三种不同形式的循环:
while
for
do while
虽然有三种不同形式的循环,但它们也仅仅是长的样子不同罢了。不管是哪一种循环方式,都是由两个基本结构组成的:
循环的内容
进入循环的条件
首先来看看while循环。
while循环
while的语法结构很简单:
while(表达式) { ...//循环语句 }
- 表达式:
进入循环的条件
;若表达式的结果为真,则执行循环语句;若为假,则不执行
。 - 循环语句:
循环的内容
;
举个例子,若是我们需要在屏幕上打印 0—9 的数字,只需这样写:
int main() { int i = 0; while (i < 10) { printf("%d ", i); i=i+1; } return 0; }
这段代码的运行逻辑是:
判断表达式是否为真,若为真,则进入循环,执行循环语句
;执行完循环语句,再次判断表达式是否为真,若为真,就继续执行循环语句,如此往复
。
再来看看while循环的兄弟——do while。
do while循环
do while循环的语法结构是这样的:
do { //...(循环语句) }while(表达式);
- 表达式:
进入循环的条件
;若表达式的结果为真,则执行循环语句;若为假,则不执行
。 - 循环语句:
循环的内容
;
do while循环与while循环非常相似,只有一点不同:
- while先
判断表达式
,再执行循环语句
; - do while先
执行循环语句
,再判断表达式
。
若我们还想在屏幕上打印 0—9 ,则需要这样写:
int main() { int i = 0; do { printf("%d ", i); i = i + 1; } while (i < 10); return 0; }
再来认识一下for循环。
for循环
for循环的语法结构:
for(表达式1; 表达式2; 表达式3) { ...//循环语句; }
- 表达式1:
用于初始化循环变量
; - 表达式2:
用于判断进入循环的条件是否为真
; - 表达式3:
用于控制循环遍历
。
什么是循环变量
?
用于控制循环的变量
,例如上面两个例子中的变量i;
for循环所说与while循环长相差异有点大。但是对比一下就会发现相似的地方:
- while循环的循环变量定义在
{}
的外面,for循环可以定义在()
外面,也可以定义在()
里面。
- 1,2两种写法其实并没有本质区别,只不过第一种写法是
C99标准
才支持的。
1.定义在里面(C99支持) for (int i = 0; i < 10; i++); 2.定义在外面 int i = 0; for (i = 0; i < 10; i++);
- while循环的
判断是否进入循环
的表达式在()
中,for循环的判断为表达式2
; - while循环
控制循环变量的语句
在{}
内,for循环中为表达式3
;
利用for循环在屏幕上打印 0—9 的数字,应该这样写:
for (int i = 0; i < 10; i++) { printf("%d ", i); }
循环结构中的break与continue
为了好的控制循环,C语言还为我们提供了两个关键字break
与continue
,以适应各种复杂的情况。
break
这里的break与上一章分支语句中的switch
语句中的break
作用相似。
break的作用:
在循环结构中当程序执行到break时,就立即停止循环并彻底结束循环
。
用法示例:
在打印0—9的过程中,加入break语句,看看是什么效果:
int main() { int i = 0; while (i<10) { if (i == 5) { break; } printf("%d ", i); i = i + 1; } return 0; }
这段程序的运行逻辑是:
在循环的过程中,当 i 的值为5时。满足进入if的条件,执行break,循环就不会在往下执行
;注意,这时i的值是5.屏幕上打印1—4
。
break在三种循环中的作用都是相同的,这里就不再一一举例。
continue
continue的作用:
在循环结构中,当程序执行到continue语句时,不再执行本次循环,直接进入下一次循环。注意,不是彻底结束循环,而仅仅是结束本次循环
。
用法示例:
打印 0—9 的数字时,不想打印5:
int main() { int i = 0; for (int i = 0; i < 10; i++) { if (i == 5) { continue; } printf("%d ", i); } return 0; }
goto语句
C语言中提供了可以随意滥用的 goto
语句和标记跳转的标号。从理论上 goto
语句是没有必要的
,实践中没有 goto
语句也可以很容易的写出代码。
但是某些场合下 goto
语句还是用得着的,最常见的用法就是终止程序在某些深度嵌套的结构
的处理过程。
- 例如,
一次跳出两层或多层循环
。
多层循环这种情况使用 break
是达不到目的的。它只能从最内层循环退出到上一层的循环。
goto 语言真正适合的场景如下:
for(...) for(...) { for(...) { if(disaster) goto error; } } … error: ...// 处理错误情况
如上,程序中不管嵌套了多少层循环,只要遇到goto
语句,就会跳到goto
语句标记(例如error
)的地方并继续向下执行。