2.17 do/while重复结构
do/while重复结构与while结构相似。在while结构中,先在循环开头测试循环条件之后再执行循环体。do/while重复结构执行循环体之后再测试循环条件,因此,do/while结构至少执行循环体一次。do/while结构终止时,继续执行while语句后面的话句。注意,如果结构体中只有一条浯句,则不必在do/while结构中使用花括号。但通常还是加上花括号,避免棍淆while与do/while重复结构。例如:
while (condition)
通常当作while结构的首部。结构体中只有一条语句的do/while结构中不使用花括号时:
do statement while ( condition );
最后一行while(condition)可能被误解成while结构包含空语句。这样,只有一个语句的do/while结构通常写成如下形式:
do { statement ) while ( condltion);
编程技巧2.29
即使不需要花括号时,一些程序员也在do/while结构中加上花括号,这样可以区分只有一个语句的do/while结构与while结构。
常见编程错误2.11
如果while、for,或do/while结构中的循环条件永远无法变成false,则合造成无限循环。为了防止无限循环,一定要保证循环首部或循环体中某个地方的条件值改变,使循环条件最终能变为false。
图2.24所示的程序用do/while重复结构打印数字1到10。注意控制变量counter在循环条件测试中是前置自增的。另外,只有一个语句的do/while结构也使用了花括号。
// Fig. 2.24: fig0224.cpp // Using the do/while repetition structure #include int main(){ int counter = l; do { cout << counter << " " ; } while ( ++counter <= 10 ); cout << endl; return 0; }
输出结果:
1 2 3 4 5 6 7 8 9 10
图2.24 使用 do/while 重复结构
do/while重复结构如图2.25。这个流程图显示循环条件要在至少进行一次操作之后才执行。注意.流程图(除了小圆框和流程之外)也只能包含矩形框和菱形框,这是我们强调的操作/判断编程模型。程序员的任务就是根据算法需要用堆栈和嵌套两种方法组合其他几种控制结构,然后填入算法所要的操作和判断,从而生成程序。