目录
- 总述
- while循环
- 语法结构
- while循环中break和continue
- break
- continue
- for循环
- 语法结构
- for循环中break和continue
- break
- continue
- for循环中省略表达式的问题
- for循环嵌套
- do-while循环
- goto语句
- 总结
总述
生活中不止处处是选择,还时常面临着重复做某事,比如呢,我们日复一日的学习、敲代码、
C语言中提供了 —while循环—for循环—do-while循环来表达循环
接下来,对三种循环进行分别介绍
while循环
while循环的流程图大致就是这样子
语法结构
while( expression ) //判断表达式是否成立,成立就执行循环体,不成立则不进入
循环体;
接下来我们使用一下while循环,打印1-10的数字
#include <stdio.h> int main(){ int i = 1; while(i < 11) printf("%d ",i++); return 0; }
这便是while最简单的用法,接下来看一下while中的break和continue
while循环中break和continue
break
看到break大家肯定不陌生,选择结构中的switch-case就要搭配着break使用哦
#include <stdio.h> int main(){ int i = 1; while(i < 11) { if( 5 == i) break; printf("%d ",i++); } return 0; }
可以看出,当i=5的时候,直接跳出了整个循环不再执行
break是直接跳出循环,也是直接跳出switch-case
continue
在英语中,continue是继续的意思 ,在循环中,表示跳过这次循环进行下一次循环
#include <stdio.h> int main() { int i = 1; while (i < 11) { if (5 == i) continue; // 把break换成continue试一下 printf("%d ", i++); } return 0; }
大家可以猜一下,可想而知,大家可能会认为结果是 1 2 3 4 6 7 8 9 10 跳过5,我们来分析一下
光标一直在闪烁,死循环,那怎么样才能达到跳过5的效果呢,
核心问题在于**这样i的值没办法变化,那我们把i放在continue前面来试试**
#include <stdio.h> int main() { int i = 0; while (i < 11) { i++; if (5 == i) continue; printf("%d ", i); } return 0; }
这样continue就不会跳过循环因子 -i 的变化,所以不会死循环,来看结果
成功跳过了5,大家在while循环中使用continue时一定要注意循环因子的问题
continue 在while循环中的作用就是:
- 本次循环中continue后边的代码不会再执行而是直接跳转到while语句的判断部分。
- 进行下一次循环的入口判断。
for循环
语法结构
for( 表达式1 ; 表达式2 ; 表达式3)
循环体;
- 表达式1为**初始化部分,用于初始化循环变量的**。
- 表达式2为_条件判断部分_,用于**判断循环时候终止**。
- 表达式3为_调整部分_,用于**_循环条件的调整 _**。
for循环中break和continue
break
for循环中break与while循环中break完全相同,表示跳出循环
#include <stdio.h> int main() { int i = 0; for (i = 1; i < 10; i++) { if (5 == i) break; printf("%d ", i); } return 0; }
break基本没啥区别,就是跳出循环
continue
for循环中continue跳出的依然是此次循环,但是并不会跳过表达式3
#include <stdio.h> int main() { int i = 0; for (i = 1; i < 10; i++) { if (5 == i) continue; printf("%d ", i); } return 0; }
依然是跳过5,continue不会跳过表达式3,意味着i++可以执行,不会造成死循环
当然,一个人想写bug谁也拦不住他
比如:
for循环中省略表达式的问题
for循环中有3个表达式,都可以省略,但是分号一个不能少
int main(){ int i = 0; //可以写成这样 for (i=0;i<10;) ; //还可以这样 for(i = 0;;) ; //甚至是这样 for(;;); //三分号一个也不能少 }
for(;