C语言中的循环语句¶
约 1357 个字 295 行代码 预计阅读时间 8 分钟
while
循环¶
基本结构¶
C | |
---|---|
1 2 3 4 |
|
基本语法¶
表达式为执行循环的判断条件,当表达式为真(不为0,包括小于0)时,执行while
循环内的语句,表达式为假时,不执行while
。并且属于先判断后执行的循环
例如:
C | |
---|---|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
|
在上面的代码中,i=0
,小于10执行while
循环打印i的值,执行完打印语句后,执行i++
更新i
的值,防止死循环。
总结:
- 在
while
循环中,int i = 0;
语句执行初始化 - 在
while
循环中,i < 10
表达式作为判断 - 在
while
循环中,i++
用于更新i
的值,防止死循环 - 在
while
循环中,循环体语句总是比判断条件少执行一次
while
循环与自增操作结合置于判断条件内¶
C | |
---|---|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 |
|
for
循环¶
基本结构¶
C | |
---|---|
1 2 3 4 |
|
基本语法¶
第二个表达式为执行循环的判断表达式,当判断表达式为真时,执行for
循环;当表达式为假时,不执行for
循环
例如:
C | |
---|---|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
|
在上面的代码中,i=0
,小于10执行for
循环打印i
的值,执行完打印语句后,执行i++
更新i
的值,防止死循环。
总结:
for
循环中,第一个表达式用于循环变量的初始化for
循环中,第二个表达式用于循环结束条件的判断for
循环中,第三个表达式用于更新循环变量for
循环中,循环变量初始化语句一整个循环执行一次for
循环中,更新循环变量语句在for
循环中执行在for
循环体语句后for
循环中,如果循环结束条件部分什么也不写表示条件恒成立
for
循环与while
循环比较¶
for
循环比while
循环更集中,将循环变量的初始化、循环结束条件的判断和循环变量的更新放在了一个语句中
C | |
---|---|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
|
do-while
循环¶
基本结构¶
C | |
---|---|
1 2 3 4 |
|
基本语法¶
在进入判断之前,首先会先执行一次循环体,再执行循环判断语句,循环判断为真,执行循环体内语句,循环判断为假,不执行循环体内语句
例如:
C | |
---|---|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
|
上面的代码中,首先会在判断之前执行一次循环体,然后再执行循环判断语句,首先打印一遍1,再循环打印2—9的数字。每一次循环中,i++
语句用于更新循环变量i
,而int i = 1;
语句用于创建循环变量i
。
do-while
循环与自增操作结合置于判断条件内¶
C | |
---|---|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 |
|
循环中的break
与continue
¶
循环中break
和continue
中的作用¶
break
:永久终止循环,直接跳出当前循环,再执行当前循环以外的语句
continue
:跳过本次循环中continue
后面的代码
while
中的break
与continue
¶
break
¶
在while
循环中,break
用于跳出当前循环,并执行while
循环以外的语句
例如:
C | |
---|---|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
|
在上面的代码中,当i
等于5时,if
表达式为真,执行if
语句中的break
,跳出当前的while
循环,不再执行循环体内的printf
语句与更新循环变量i
语句,而执行循环体外的printf
语句。
嵌套while
循环中的break
¶
在嵌套while
循环中,break
会跳出包括break
语句的一层循环
例如:
C | |
---|---|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 |
|
当i
为5
时不打印n
的值,即跳出了内层while
循环执行外层while
循环中的语句。
continue
¶
在while
循环中,continue
用于跳过当前循环中continue
后面的语句,但是注意,如果更新循环变量语句在cotinue
后面会造成死循环
例如:
C | |
---|---|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
|
在上面的代码中,当i
等于5时执行continue
语句,跳过当前循环中的printf
语句和更新循环变量语句i++
,并执行循环判断表达式,此时由于i
中的值始终为5,导致循环判断表达式始终为真,进而导致进入死循环,所以在while
语句中需要用continue
语句的时候需要注意更新循环变量语句需要在continue
语句前面。
C | |
---|---|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 |
|
for
循环中的break
与continue
¶
break
¶
for
循环中的break
语句与while
循环中的break
语句作用效果一样。
嵌套for
循环中的break
¶
嵌套for
循环中的break
语句与嵌套while
循环中的break
语句作用效果一样
continue
¶
由于for
循环中的更新循环变量表达式在for
表达式内,而不是在循环体内,所以for
循环中的continue
语句效果和while
循环中的continue
语句会有一些差异
例如:
C | |
---|---|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
|
与while
循环不同,上面的代码并没有进入死循环,而是打印了除5以外的1-10的数字。
由于更新循环变量表达式i++
在for
循环表达式中,而不是在循环体内,所以执行continue
语句后会执行更新循环变量表达式i++
,从而不会造成死循环。
do-while
循环中的break
与continue
¶
break
¶
do-while
循环中的break
语句与while
循环中的break
语句作用效果一样。
continue
¶
do-while
循环中的continue
语句与while
循环中的continue
语句作用效果一样。
循环体内的变量可否访问¶
while
循环¶
C | |
---|---|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 |
|
for
循环¶
C | |
---|---|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 |
|
do-while
循环¶
与while
循环相同