现在的位置: 首页 > 综合 > 正文

C++ 初学者指南 第三篇(5)do-while循环

2014年02月27日 ⁄ 综合 ⁄ 共 1469字 ⁄ 字号 评论关闭

必备技能3.5:do-while循环
    C++中的最后一个循环是do-while循环。不像for和while循环,它们都是在执行循环之前先进行控制条件的检测,do-while循环是在循环体执行之后才进行循环控制条件的检测。这就是说,do-while循环至少要执行一次。它的通用形式如下:
do
{
    语句;
}while(条件);
在循环中只有一条语句的情况下,上面的一对括号并不是必要的,但是通常还是要这样写以便提高程序的可读性。do-while循环一直执行,只要条件表达式的值为真(true)。

    下面的程序会一直循环直到用户键入100这个数字:

#include <iostream>  
using namespace std;  
int main()  
{  
    int num;  
    do  
    {  
        cout << " Enter a number ( 100 to stop ):";  
        cin >> num;  
    }while( num != 100 ) ;  
    return 0;  
}  

使用do-while循环,我们可以进一步改善一下前面的“猜数字”程序。这次,这个程序会一直循环直到用户猜中了数字。

//Magic Number program; 3rd improvement.  
#include <iostream>  
#include <cstdlib>  
using namespace std;  
int main()  
{  
    int magic; // magic number  
    int guess; // user's guess  
    magic = rand();  
    do   
    {  
        cout << "Enter your guess:";  
        cin >> guess;  
        if ( guess == magic )  
        {  
            cout << "**Right**";  
            cout << magic << " is the magic number. \n";  
        }  
        else  
        {  
            cout << "...Sorry, your are wrong.\n";  
            if ( guess > magic )  
                cout << " Your guess is too high. \n";  
            else  
                cout << " Your guess is too low. \n";  
        }  
    }while( guess != magic );  
    return 0;  
}  

程序运行的可能结果如下:
Enter your guess:10
...Sorry, your are wrong.
 Your guess is too low.
Enter your guess:100
...Sorry, your are wrong.
 Your guess is too high.
Enter your guess:50
...Sorry, your are wrong.
 Your guess is too high.
Enter your guess:41
**Right**41 is the magic number.

最后一点:和for以及while循环一样,do-while循环体可以为空,但这种情况在实际中很少用到。

练习
1. while和do-while循环的主要区别是什么?
2. While循环的循环体可以为空吗?
答案
1. While循环中的条件检测是在循环开始前进行的,而do-while的循环检测是在循环之后才进行的,因此do-while循环至少会执行一次。
2. 是的,while循环的循环体可以为空。其实C++中的任何其他循环的循环体都可以为空。

专家答疑
问:考虑到C++中内置的灵活性,在选择使用循环的时候,应该有什么样的准则?也就是说,怎么来选择合适的循环了?
答:在明确知道循环次数的情况下通常使用for循环;在循环体至少需要被执行一次的情况下使用do-while循环。在通常不能明确知道循环需要执行的次数的情况下使用while循环。


抱歉!评论已关闭.