-
1 文字讲解
-
2 视频讲解
-
3 拓展资料
一、do while循环语句的一般形式
do
{
语句序列 ;
} while ( 表达式 ) ;
说明:① 是一种直到型的循环结构。 ② 最后一个分号必须有。 ③ 花括号{ }必须有。 ④ 循环体是指语句序列,可以是一条语句或多条语句。
二、do while循环语句的执行过程
1、do while循环语句的流程图

2、do while语句的执行过程
① 执行循环体中的语句,开始一个循环的周期。
② 计算表达式的值。如果表达式为非 0,即循环条件为真,则转到第①步,开始下一个循环周期;如果表达式为 0,即循环条件为假,则转到第③步。
③ 结束 do...while循环,转而执行 do...while 循环语句后的第 1 条语句。
do...while 语句执行的特点是:先执行循环体,后判断条件,至少执行一次循环体。
例4-2 输入若干字符,以'*'作为输入结束符,分别用do...while语句和while语句实现,输入相同的字符串,比较它们的运行结果有何不同。
一、分析:
二、源程序如下:
1、do...while方式实现源代码如下:
#include <stdio.h>
#include <conio.h>
main( )
{
char ch;
printf("使用 do...while 语句\n");
printf("输入若干字符('*'结束).\n");
ch = getchar( );
do {
putchar( ch );
ch = getchar( );
} while ( ch != '*' );
getch( );
}
2、while方式实现源代码如下:
#include <stdio.h>
#include <conio.h>
main( )
{
char ch;
printf("使用 while 语句\n");
printf("输入若干字符('*'结束).\n");
ch = getchar( );
while( ch != '*' )
{
putchar( ch );
ch = getchar( );
}
getch( );
}
三、程序测试
1、测试数据1:ABC*
期望结果:ABC

测试结果:程序达到预期结果。
2、测试数据2:*DEFG*
期望结果:ABC

测试结果:程序达到预期结果。
可以看出,如果第1次执行循环体时表达式为真,那么两种循环得到的结果相同;否则,两者的结果就不同( 前提:两者的循环体中的语句相同 )。
三、do...while循环语句的注意事项
1、不管语句是由多行或一行构成,都必须用"{ }"括起来,表示循环体。
2、while( 表达式 )后的";"不能遗漏。
3、do...while语句循环允许多层循环嵌套。
4、为防止造成死循环,需要在while循环的语句中或判断表达式中进行适当的条件修改,使其可以跳出循环。
这个循环与while循环的不同在于: 它先执行循环中的语句,然后再判断表达式是否为真, 如果为真则继续循环;如果为假, 则终止循环。因此, do-while循环至少要执行一次循环语句。
例4-3 输入一个整数,按相反次序输出。例如,输入54321,输出12345.
一、程序分析:
二、源程序参考如下:
#include <stdio.h>
#include <conio.h>
main()
{
long num;
int b;
printf("输入一个整数:" );
scanf("", &num); //输入一个整数,位数可超过5
do
{
b = num % 10; // 取个位数字
printf( "%d", b );
num = num / 10; // 去掉个位数字
} while( num ); // 非 0 继续循环,0 结束
printf("\n");
getch( );
}
三、程序测试
测试数据:54321
期望结果:12345

测试结果:程序达到预期结果。
四、运行过程
| 变量名 | b | num | 变量名 | b | num |
|---|---|---|---|---|---|
| 初始状态 | 54321 | 第3轮循环 | 3 | 54 | |
| 第1轮循环 | 1 | 5432 | 第4轮循环 | 4 | 5 |
| 第2轮循环 | 2 | 543 | 第5轮循环 | 5 | 0 |


