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循环相同