7.7 出口条件循环:do while

C语言学习栏目目录


源码(免费的,如果变成需要积分在评论区留个邮箱)

while循环和for循环都是入口条件循环,即在循环的每次迭代之前检查测试条件,所以有可能根本不执行循环体中的内容。C语言还有出口条件循环(exit-condition loop),即在循环的每次迭代之后检查测试条件,这保证了至少执行循环体中的内容一次。这种循环被称为 do while循环。程序清单 演示了一个示例。

/************************************************************************
 功能:出口条件循环
 ************************************************************************/
#include <stdio.h>
int main(void)
{
	const int secret_code = 13;
	int code_entered;
	do
	{
		printf("请输入密码:");
		scanf("%d", &code_entered);
	} while (code_entered != secret_code);
	printf("do while 成功!\n");
	system("pause");		//暂停控制台
	return 0;
}

程序清单在用户输入13之前不断提示用户输入数字。下面是一个运行示例:

请输入密码:15
请输入密码:13
do while 成功!
请按任意键继续. . .

使用while循环也能写出等价的程序,但是长一些,如程序清单所示。

#include <stdio.h>
int main(void)
{
	const int secret_code  = 13;
	int code_entered;
	printf("请输入密码: ");
	scanf("%d", &code_entered);
	while (code_entered != secret_code)
	{
		printf("请输入密码: ");
		scanf("%d", &code_entered);
	}
	printf("while 成功!\n");
	system("pause");		//暂停控制台
	return 0;
}

输出:

请输入密码: 12
请输入密码: 21
请输入密码: 13
while 成功!
请按任意键继续. . .

下面是do while循环的通用形式:

do

statement

while ( expression );

statement可以是一条简单语句或复合语句。注意,do  while循环以分号结尾,其结构见图。

do while循环在执行完循环体后才执行测试条件,所以至少执行循环体一次;而for循环或while循环都是在执行循环体之前先执行测试条件。do while循环适用于那些至少要迭代一次的循环。例如,下面是一个包含do while循环的密码程序伪代码:
 

do
{
    提示用户输入密码
    读取用户输入的密码
} while (用户输入的密码不等于密码);避免使用这种形式的do while结构:
do
{
    询问用户是否继续其他行为
} while (回答是yes);

这样的结构导致用户在回答“no”之后,仍然执行“其他行为”部分,因为测试条件执行晚了。 

小结:do while语句

关键字:do while

一般注解:

do while 语句创建一个循环,在 expression 为假或 0 之前重复执行循环体中的内容。do while语句是一种出口条件循环,即在执行完循环体后才根据测试条件决定是否再次执行循环。因此,该循环至少必须执行一次。statement部分可是一条简单语句或复合语句。

形式:

do
    statement
while ( expression );

在test为假或0之前,重复执行statement部分。

 

©️2020 CSDN 皮肤主题: 猿与汪的秘密 设计师:上身试试 返回首页