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

2020-01-06 12:10:02于海丽
我们已经学习了for语句的循环,并且知道for语句习惯上是用在已知循环次数的情况下的。但是,人不具有先知的能力,有些时候我们无法预知一个循环要进行几次,那我们该怎么办呢?

一个循环,最不可缺少的就是开始和终止。如果一个程序的循环只有开始没有终止,那么这个程序是不会有结果的。所以,我们必须知道什么时候让循环终止,即循环继续或循环终止的条件。
于是,一个只包含循环继续条件的循环语句产生了,那就是while语句,具体语法格式为:
while (循环继续的条件)
   语句块;

while语句要比for语句简练很多,它只负责判断循环是否继续。所以,我们必须人为地在语句块中改变参数,使得循环最终能够被终止。由于while循环是在循环语句块之前判断是否继续循环,所以又被称为“当型循环”。

下面让我们来看一段简单的程序:(程序5.4.1)
#include "iostream.h"
#include "iomanip.h"
int main()
{
   int password;
   cout <<"请设置一个四位数密码(首位不能是0):" <<endl;
   cin >>password;
   int i=0;
   while (i!=password)//如果密码没猜中就继续猜
   {
      i++;
   }
   cout <<"破解成功!密码是" <<i <<endl;
   return 0;
}
运行结果:
请设置一个四位数密码(首位不能是0):
1258
破解成功!密码是1258

可能有些读者还没看懂,上面这段程序到底是什么意思。其实上面这段程序就是暴力破解密码的基本原理。假设某台电脑内设置了一个四位整数的密码,我们就可以通过循环语句让它不断地去尝试猜测,但是我们无法预知这个密码是多少,也就无法知道循环里的语句块要执行多少次,所以我们应该使用while循环,而循环继续的条件就是密码没有被猜中。

算法时间:电脑的猜测
很多人认为,电脑没有思维,怎么能猜测呢?其实这样就大错特错了。电脑自己是无法猜测的,但是我们可以使用循环语句教它如何猜测,更确切地说是教它如何找到。这种使用循环来查找结果的方法我们称为穷举法。即把所有可能的结果都去试试看,如果哪个能对上号了,就是我们所要的答案。但是在使用它的时候我们要注意严密性,如果自己考虑时漏掉了可能的结果,那么电脑自然不会猜出完美的答案来。穷举法在程序设计中使用十分广泛,甚至很多人脑难以解决的问题,它都能很快地给出答案。

在实际使用中,我们发现while语句就像是只有循环条件的for语句。所以,在某些场合下,while语句和for语句是可以互相转化的。而while语句也有着和for语句类似的嵌套,在这里不作赘述。