学科分类
目录
C语言

do...while循环

do…while循环语句和while循环语句功能类似,二者的不同之处在于,while循环语句先判断循环条件,再根据判断结果来决定是否执行大括号中的代码,而do…while循环语句先要执行一次循环体的语句再判断循环条件,其具体语法格式如下:

do 
{
  执行语句
  …
} while(循环条件);

在上面的语法格式中,关键字do后面{}中的执行语句是循环体。do…while循环语句将循环条件放在了循环体的后面。这也就意味着,循环体会无条件执行一次,然后再根据循环条件来决定是否继续执行。

do…while循环的执行流程如图1所示。

图1 do…while循环的执行流程

下面通过一个案例演示do…while的使用,该案例要求程序实现反转数字的功能,例如,从键盘输入1234,反转输出4321,案例具体实现如例1所示。

例1 dowhile.c

 1  #define _CRT_SECURE_NO_WARNINGS
 2  #include <stdio.h>
 3  int main()
 4  {
 5    int res, num;
 6    printf("请输入num的值:");
 7    scanf("%d",&num);
 8    do
 9    {
 10     res = num % 10;    //取末尾倒数第一个数
 11     printf("%d", res);   //输出末尾倒数第一个数   
 12     num = num / 10;    //每去掉末尾一个数之后舍掉该数
 13   }while (num != 0);
 14   return 0;
 15 }

例1运行结果如图2所示。

图2 例1运行结果

在例1中,第5-7行代码定义变量res和num,并调用scanf()函数从键盘输入num的值;第8~13行代码通过do…while循环分解num的数字组成,以不换行的形式打印出来;第10~11行代码使用变量res保存num求余运算后得到的个位数的值,并将该值打印到终端,之后执行第12行代码,去掉数字num的最低位。以上操作执行后,判断num是否不为0,若条件成立,继续执行循环体中的语句,直到num等于0时结束循环。

由图2可知,当输入数据123时,程序输出了反转后的数据321,其反转过程如下:

(1)进入do…while循环;

(2)执行第10行代码,res=num%10=123%10=3;

(3)执行第11行代码,输出res的值,即输出3;

(4)执行第12行代码,num=num/10=123/10=12,执行之后,num的值为12;

(5)执行第13行代码,判断while循环中的条件是否成立,由于num的值为12,因此num!=0成立;

(6)继续执行下一轮循环。

这样直到数据反转完成,while循环不成立,输出321。

点击此处
隐藏目录