目录
while语句
for语句
do while语句
goto语句
while语句
语法结构:
- while ( expression )
- statement
复制代码
statement部分可以是以分号结尾的简单语句,也可以是用花括号括起来的复杂语句
如果expression为真(非零),执行statement部分一次,然后再次判断expression。在expression为假(0)之前,循环的判断和执行一直在重复进行。每次循环都被称为一次迭代。
拓展:在C中,真的概念很宽泛,所有的非零值都被视为真,只有0被视为假。C99专门针对真假类型的变量提出了_Bool类型,_Bool类型变量只能只能存储1(真)或假(0),如果把其他非零数值赋给此类型变量,该变量会被设置为1。
在构建while循环时必须让测试值有变化,表达式最终的结果要为假,否则循环就不会终止(实际上还可以用break语句和if语句来终止循环,后面会说到),如下此代码段执行就会不停的打印"Good moring"
- index = 1;
- while (index < 5)
- printf("Good morning!\n");
复制代码
while循环经常使用关系表达式:
简单的关系表达式由关系运算符及其运算对象组成,如果关系为真,关系表达式的值为1如果关系为假,关系表达式的值为0。
示例:
5 > 2 为真,关系表达式的值为1
( 2 + a )== a 为假,关系表达式的值为0
关系表达式中间的运算符叫关系运算符,每个运算符都把它左侧的值和右侧的值相比较。
关系运算符
运算符 | 含义 |
< | 小于 |
<= | 小于或等于 |
== | 等于 |
>= | 大于或等于 |
> | 大于 |
!= | 不等于 |
C语言中引入了break语句和if语句来跳出循环
break:
在循环中只要遇到break,就停止后期的所有的循环,直接终止循环。
所以:while中的break是用于永久终止循环的。
- #include <stdio.h>
- int main()
- {
- int i = 1;
- while (i <= 10)
- {
- if (i == 5)
- break;
- printf("%d ", i);
- i = i + 1;
- }
- return 0;
- }
复制代码
该代码运行结果:1 2 3 4,当i ==5时,循环结束,5不打印
continue:
continue是用于终止本次循环的,也就是本次循环中continue后边的代码不会再执行,
而是直接跳转到while语句的判断部分。进行下一次循环的入口判断。
- #include <stdio.h>
- int main()
- {
- int i = 1;
- while (i <= 10)
- {
- if (i == 5)
- continue;
- printf("%d ", i);
- i = i + 1;
- }
- return 0;
- }
复制代码
当i==5时跳过continue后面的语句(while循环中的),所以该程序执行结果为:1 2 3 4
for语句
循环结构一般包含三个部分:初始化,判断部分,调整部分
语法结构: for(表达式1; 表达式2; 表达式3)
statement
注解:表达式1在执行for语句之前只执行一次;然后对表达式2求值,如果表达式为真,执行循环一次;接着对表达式3求值,并再次检查表达式2。for语句是一种入口条件循环,即在执行循环之前就决定了是否执行循环。因此,for循环可能一次都不执行。statement部分可以是一条简单语句或复杂语句。
表达式**1**
表达式1为初始化部分,用于初始化循环变量的。
第一个表达式不一定是给变量赋初值,也可以使用printf()。在执行循环的其他部分之前,只对第一个表达式求值一次或执行一次
- for (printf("Keep entering numbers!\n");num != 6;scanf("%d",&num))
复制代码
表达式**2**
表达式2为条件判断部分,用于判断循环时候终止。
表达式**3**
表达式3为调整部分,用于循环条件的调整。
建议:for循环不可在循环体内修改循环变量,防止for循环失去控制
建议for语句中的循环控制变量的取值采用“前闭后开区间”写法
可以省略一个或多个表达式但是不能省略分号,只要在循环中包含能结束循环的语句即可(判断部分省略的话,此部分恒为真)
do while语句
语法:
注解:在表达式为假或0之前重复执行循环语句,do while循环是出口条件循环,即在每次迭代之后检查测试条件,保证了循环至少执行一次,但是使用场景有限,所以不是经常使用
- do
- scanf("%d", &number);
- while (number != 20);
复制代码
do while语句中的break和continue
- #include <stdio.h>
- int main()
- {
- int i = 10;
-
- do
- {
- if(5 == i)
- break;
- printf("%d\n", i);
- } while(i<10);
-
- return 0;
- }
- #include <stdio.h>
- int main()
- {
- int i = 10;
-
- do
- {
- if(5 == i)
- continue;
- printf("%d\n", i);
- }while(i<10);
-
- return 0;
- }
复制代码
goto语句
C语言中提供了可以随意“滥用”的 goto语句和标记跳转的标号。从理论上 goto语句是没有必要的,实践中没有goto语句也可以很容易的写出代码,但是某些场合下goto语句还是用得着的,最常见的用法就是终止程序在某些深度嵌套的结构的处理过程。
- for(...)
- for(...)
- {
- for(...)
- {
- if(disaster)
- goto error;
- }
- }
- …
- error:
- if(disaster)
- // 处理错误情况
复制代码
只能在一个函数范围内跳转,不能跨函数,运用于跳出多层嵌套