循环语句(Loop Statement) 是一种让程序重复执行一段代码的语句。
C 语言可以使用 while 或 do ... while 来创建循环,前者先判断循环条件再执行代码,后者先执行代码再判断循环条件。
while 循环的基本结构如下:
while (循环条件)
{
循环体
}
说明:
判断“循环条件”是否为 true
如果为 true 则执行循环体,然后进入下一轮循环
如果为 false 则结束循环
graph TD
START([开始]) --> COND{循环条件?} -- 是 --> 循环体 --> COND
COND -- 否 --> END([结束])
示例:
#include <stdio.h>
int main(void)
{
int i = 5;
while (i > 0) // i 大于 0 时执行循环
{
printf("循环执行,i=%d\n", i);
i -= 1; // 将 i 的值减一
}
return 0;
}
说明:
当 i 大于 0 时,执行循环
循环中打印 i 的值,然后将 i 值减一
运行结果:
循环执行,i=5
循环执行,i=4
循环执行,i=3
循环执行,i=2
循环执行,i=1
do ... while 循环的基本结构如下:
do
{
循环体
}
while(循环条件);
说明:
执行“循环体”,然后判断“循环条件”是否为 true
如果为 true,则进入下一轮循环
如果为 false 则结束循环
因为
do ... while先执行循环体,再进行循环条件的判断;所以即使循环条件一开始就是false,循环体也会执行一次。
graph TD
START([开始]) --> 循环体 --> COND{循环条件?} -- 是 --> 循环体
COND -- 否 --> END([结束])
示例:
#include <stdio.h>
int main(void)
{
int i = 0; // 初始值为 0
do
{
printf("循环执行,i=%d\n", i);
i -= 1; // 将 i 的值减一
}
while (i > 0); // i 大于 0 时继续执行循环
return 0;
}
说明:
循环中打印 i 的值,然后将 i 值减一
当 i 大于 0 时,继续执行循环
虽然 i 的初始值是 0,不满足大于 0 的条件;但是由于先执行“循环体”,后判断“循环条件”;所以仍然会打印一次。
运行结果:
循环执行,i=0
使用 break 可以提前跳出循环。
示例:
#include <stdio.h>
int main(void)
{
int i = 5;
while (i > 0) // i 大于 0 时执行循环
{
printf("循环执行,i=%d\n", i);
i -= 1; // 将 i 的值减一
if (i == 2) // 如果 i 的值为 2
{
break; // 跳出循环
}
}
return 0;
}
说明:
当 i 大于 0 时,执行循环
“循环体”中如果 i 的值是 2,则提前结束循环
运行结果:
循环执行,i=5
循环执行,i=4
循环执行,i=3
使用 continue 可以提前进入下一轮循环。
示例:
#include <stdio.h>
int main(void)
{
int i = 5;
while (i > 0) // i 大于 0 时执行循环
{
if (i % 2 == 0) // 如果 i 除以 2 的余数为0
{
i -= 1; // 将 i 的值减一
continue; // 进入下一轮循环
}
printf("循环执行,i=%d\n", i);
i -= 1; // 将 i 的值减一
}
return 0;
}
说明:
当 i 大于 0 时,执行循环
“循环体”中如果 i 除以 2 余数为 0,则提前进入下一轮循环
运行结果:
循环执行,i=5
循环执行,i=3
循环执行,i=1