C语言的do-while语句的两种写法

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

看下面的例子:

#include <stdio.h> 
int main(void) 
{ 
    const int secret_code = 13; 
    int code_entered; 
 
    do 
    { 
        printf("To enter the triskaidekaphobia therapy club,\n"); 
        printf("please enter the secret code number: "); 
        scanf("%d", &code_entered); 
    } while (code_entered != secret_code); 
    printf("Congratulations! You are cured!\n"); 
 
    return 0; 
} 

运行结果:

  • To enter the triskaidekaphobia therapy club,
  • please enter the secret code number: 12
  • To enter the triskaidekaphobia therapy club,
  • please enter the secret code number: 14
  • To enter the triskaidekaphobia therapy club,
  • please enter the secret code number: 13
  • Congratulations! You are cured!

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

#include <stdio.h> 
int main(void) 
{ 
    const int secret_code = 13; 
    int code_entered; 
 
    printf("To enter the triskaidekaphobia therapy club,\n"); 
    printf("please enter the secret code number: "); 
    scanf("%d", &code_entered); 
    while (code_entered != secret_code) 
    { 
        printf("To enter the triskaidekaphobia therapy club,\n"); 
        printf("please enter the secret code number: "); 
        scanf("%d", &code_entered); 
    } 
    printf("Congratulations! You are cured!\n"); 
 
    return 0; 
} 

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

do 
    statement 
while ( expression ); 

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

C语言的do-while语句的两种写法
Structure of a =do while= loop=

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

do 
{ 
    prompt for password 
    read user input 
} while (input not equal to password); 

避免使用这种形式的do-while结构:

相关推荐