循环语句
思维导图

介绍
循环语句是C语言中十分常用的控制结构之一,用于重复执行一段代码。
一件事情需要重复的做,就可以使用循环语句来实现。
在C语言中,常见的循环语句包括while、for和do while语句。
while循环:
特征
- while循环是一种先判断条件是否满足的循环语句,
- 然后根据条件是否满足来决定是否继续执行循环体内的代码。
基本结构
while (循环条件)
{
//循环体代码
}
执行原理
- 如果条件满足,则执行循环体内的代码,并再次判断条件是否满足,
- 如果条件不满足,则跳出循环。
for循环
特征
-
for循环具有比while循环更加紧凑的结构
-
for循环由三部分组成:
- 循环变量的初始化
- 循环条件
- 循环变量的更新
基本结构
for (循环变量初始化; 循环条件; 循环更新)
{
//循环体代码
}
执行原理
- for循环在执行前先进行循环变量的初始化,
- 然后判断条件是否满足,如果条件满足,则执行循环体内的代码,并执行循环变量的更新;如果条件不满足,则跳出循环。
循环变量
for循环中的循环变量,建议采用前闭后开的写法。
下面的代码用来说明这种应用:
形式1,前闭后开:
int i = 0;
//前闭后开的写法
for(i=0; i<10; i++)
{
;
}
这里表示一共执行10次,循环条件和执行次数对应,阅读性更强
形式2,前闭后闭:
for(i=0; i<=9; i++)
{
;
}
这里也表示一共执行10次,循环条件和执行次数不对应,阅读性不强
特殊形式
设置多个循环变量和循环条件
int x, y;
for (x = 0, y = 0; x<2 && y<5; ++x, y++)
{
printf("hehe\n");
}
return 0;
do while循环
特征
- do while循环相对while和for循环的使用频率较低
- do while循环是先执行循环体内的代码,然后再判断条件是否满足
基本结构
do
{
//循环体代码
} while (循环条件);
执行原理
- do while循环先执行循环体内代码,
- 然后再根据条件判断,是否继续执行循环
循环语句对比
基本结构
- for循环相对于while循环和do while循环,结构更加集中和紧凑,适合已知循环次数的场景
执行原理
-
while循环和for循环都是先判断条件是否满足,再执行循环内的代码
-
do while循环是先执行循环内的代码,再判断条件是否满足
语句中的break和continue
break介绍
对于三种循环而言,都是直接跳出整个循环体,不再执行剩下的循环
- 在while循环中的应用举例:
#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时,就直接结束了整个循环,不会再执行后面的循环
- 在for循环中的应用举例:
#include <stdio.h>
int main()
{
int i = 0;
for (i = 1; i <= 10; i++)
{
if (i == 5)
break;
printf("%d ", i);
}
return 0;
}
这里的代码只会输出:1 2 3 4,因为当i等于5时,就直接结束了整个循环,不会再执行后面的循环
- 在do while循环中的应用举例:
#include <stdio.h>
int main()
{
int i = 1;
do
{
if (5 == i)
break;
printf("%d ", i);
i = i + 1;
} while (i <= 10);
return 0;
}
这里的代码只会输出:1 2 3 4,因为当i等于5时,就直接结束了整个循环,不会再执行后面的循环
continue介绍
对于三种循环而言,都是跳出当前循环,不再执行当前循环中continue后面的代码,直接执行下次循环
- 在while循环中的应用举例:
#include <stdio.h>
int main()
{
int i = 1;
while (i <= 10)
{
i = i + 1;
if (i == 5)
continue;
printf("%d ", i);
}
return 0;
}
-
这里的代码只会输出: 2 3 4 6 7 8 9 10,因为i第一次进入循环就增加了1,所有从2开始输出。
-
在循环过程中,当i等于5时,遇到continue,跳过了打印,直接执行下次循环,所有5不会输出
-
当i不等于5时,不会执行continue,也就是不会跳过打印,后面正常输出
- 在for循环中的应用举例:
#include <stdio.h>
int main()
{
int i = 0;
for (i = 1; i <= 10; i++)
{
if (i == 5)
continue;
printf("%d ", i);
}
return 0;
}
-
这里的代码只会输出: 1 2 3 4 6 7 8 9 10,在循环过程中,当i等于5时,遇到continue,跳过了打印,直接执行下次循环,所有5不会输出
-
当i不等于5时,不会执行continue,也就是不会跳过打印,后面正常输出
- 在do while循环中的应用举例:
#include <stdio.h>
int main()
{
int i = 1;
do
{
if (5 == i)
continue;
printf("%d ", i);
i = i + 1;
} while (i <= 10);
return 0;
}
- 这里的代码只会输出: 1 2 3 4 ,在循环过程中,当i等于5时,遇到continue,跳过了打印和i的更新,
- 直接执行下次循环,这时i依然是5,再次执行continue,再次跳过,i无法更新,陷入死循环