C++的do...while语句详解

2020-01-06 12:10:02于海丽


导火索——do

在实际生活中会有这样的问题,比如今天是星期一,我们以一周作为一个循环,那么循环结束的条件还是“今天是星期一”。如果我们写while (今天!=星期一),那么这个循环压根儿就不会运行。因为“今天是星期一”不符合循环继续的条件,已经直接使循环结束了。

其实我们只要让第一次的循环运行起来就是了,然后再写上while (今天!=星期一),就能达到我们的目的。如果我们把后面可以发生的循环比作能发生连锁反应的炸药,那么我们缺少的只是一根导火索。而在C++中,就有这么一根导火索——do。它能够搭配while语句,使得第一次的循环一定能运行起来。它的语法格式是:
do
   语句块;
while (循环继续的条件);

要注意,这里的while后面是有一个分号的,如果缺少了这个分号,则会导致错误。下面就让我们来看一个do……while的程序:(程序5.4.2)
#include "iostream.h"
int main()
{
   char inquiry;
   do
   {
      int n;
      cout <<"你要输出几个星号?" <<endl;
      cin >>n;
      for (int i=0;i<n;i++)//输出n个星号
      {
         cout <<'*';
      }
      cout <<endl;
      cout <<"还要再输出一行吗?(n表示不要)" <<endl;
      cin >>inquiry;
   }while (inquiry!='n' && inquiry!='N');
   return 0;
}
运行结果:
你要输出几个星号?
3
***
还要再输出一行吗?(n表示不要)
y
你要输出几个星号?
2
**
还要再输出一行吗?(n表示不要)
y
你要输出几个星号?
1
*
还要再输出一行吗?(n表示不要)
n
在这段程序中,由for语句来控制输出星号的个数。而do…while语句则是提供了一个用户交流的方式,一旦用户回答n,则退出程序。

算法时间:命令行下的人机交流
我们现在所使用的Windows系统称为图形用户界面(GUI——Graphic User Interface),它是一种可以由鼠标控制的直观的操作系统(OS——Operating System)。然而,在图形用户界面的操作系统被开发出来之前,我们只好在DOS环境下面对着冷冰冰的电脑,没有好看的图标,也没有方便的鼠标。这种在黑乎乎的屏幕上给电脑下命令的操作模式叫做命令行(Command Line)模式。很显然,这种模式给用户很不友好的感觉。所以,我们在设计一个完美的命令行程序时,不仅要求它在功能上质量上的完美,还要求它能够提供更好的人机交流。而程序5.4.2中do……while语句的用法便是高级语言中简单而常用的提供人机交流的方法。