1 语法结构
do…while语句的语法结构:
do
循环语句;
while(循环条件表达式);
循环执行流程图:
循环执行过程:
- 执行循环语句;
- 对表达式求值;
- 如果表达式为假,则退出整个循环;
- 如果表达式为真,则跳到第1步继续执行;
- 如果循环语句中有break,则退出整个循环;
- 如果循环语句中有continue,则跳过continue后面的所有语句,然后跳到第2步继续执行。
循环特点:
8. 循环至少执行一次,使用场景有限,不经常使用。
2 示例
2.1 示例1
希望打印数字1-10,代码如下图所示:
int main()
{
int i = 1;
do
{
printf("i = %d\n", i);
i++;
} while (i <= 10);
return 0;
}
代码运行结果如下图所示:
如果希望打印数字1-4,可在循环语句中加入break,代码如下图所示:
int main()
{
int i = 1;
do
{
if (5 == i)
{
break;
}
printf("i = %d\n", i);
i++;
} while (i <= 10);
return 0;
}
代码运行结果如下图所示:
如果希望跳过打印数字5,在循环语句中加入continue,代码如下图所示:
int main()
{
int i = 1;
do
{
if (5 == i)
{
continue;
}
printf("i = %d\n", i);
i++;
} while (i <= 10);
return 0;
}
代码运行结果如下图所示:
光标一直在闪动,程序无法正常结束。循环中遇到continue,则跳过continue后边的语句,继续对循环条件表达式求值。本例中,i++在continue的后面,当遇到continue时跳过i++语句,导致循环变量i的值无法继续更新,始终等于5,程序进入死循环。
修改上面的代码,挪动i++语句的位置,如下图所示:
int main()
{
int i = 1;
do
{
i++;
if (5 == i)
{
continue;
}
printf("i = %d\n", i);
} while (i <= 10);
return 0;
}
代码运行结果如下图所示:
程序正常结束,跳过打印数字1和5,斗多余打印数字11,不符合预期。
继续修改代码,i++语句位置保持不动,在continue语句前面增加一条i++语句,如下图所示:
int main()
{
int i = 1;
do
{
if (5 == i)
{
i++;
continue;
}
printf("i = %d\n", i);
i++;
} while (i <= 10);
return 0;
}
代码运行结果如下图所示: