必备技能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循环。