6.2 while循环
C++入门经典(第5版•修订版)
while循环导致程序重复执行一组语句,直到开始条件为false。在关键字while后面,将一个表达式放在括号内,如果该表达式为true,就执行循环块内的语句。这些语句将重复执行,直到表达式为false。
下面的while循环显示数字0~99:
关键字while后跟一个放在括号内的表达式。这条语句没有以分号结尾,而循环内的语句是一个放在{和}之间的语句块。
该循环包含条件表达式x < 100。只要x小于100,就执行循环体:显示x的值,并将其加1。
x为100后,该循环将结束。
如果没有使用递增运算符的语句x++,x的值将始终为0,而循环将永远不会结束,这称为无限循环。
在程序清单6.1中,程序Thirteens使用一个while循环显示可被13整除且小于500的所有数字。
程序清单6.1 Thirteens.cpp的完整源代码
程序Thirteens演示了while循环的基本原理:检查指定的条件,只要该条件为true,就不断执行循环体。第7行检查条件“变量counter是否小于500”,如果该条件为true,就执行循环体。
在第9行,将变量counter递增;在第10行,使用一条if语句检查counter的当前值能否被13整除,如果能,就显示它。
当counter不再小于500时,第7行的条件将为false,这导致while循环结束,而程序将跳过第8~14行,进入第16行继续执行。
6.2.1 退出循环
break语句导致循环立即终止,而不等待条件为false。程序清单6.2所示的程序Fourteens 演示了该语句,这个程序显示前20个可被14整除的数。
程序清单6.2 Fourteens.cpp的完整源代码
这个程序与程序Thirteens类似,它将变量counter从0开始递增,如果它的值能被14整除(第11行),就显示它。
第8行的while条件使用了一个不同寻常的表达式:
由于只要条件为true,while循环就将不断执行,这个循环被设计成无限循环。
第18行的break语句用于终止循环。使用变量multiples跟踪显示了多少个可被14整除的数,如果该变量大于19,就终止循环。
警告:
如果退出条件得不到满足,诸如while(true)等无限循环可能导致程序永远执行下去。对于自身不能结束的程序,可按Ctrl+C组合键终止执行。使用while(true)时要特别小心,并仔细测试代码。
6.2.2 跳到下一次循环
另一种改变循环行为的方式是使用continue语句。在循环中遇到continue语句时,将跳过余下的语句,开始下一次循环迭代。
程序清单6.3所示的程序Fifteens显示前20个可被15整除的数,它在while循环内部使用了一条continue语句。
程序清单6.3 Fifteens.cpp的完整源代码
程序Fifteens使用一个while循环将变量counter递增,这与本章前面的两个程序类似。第8行的while语句导致循环不断执行,直到显示了20个可被15整除的数。
第10行将变量counter递增。
第11行使用一条if语句检查变量counter能否被15整除。如果不能,就执行第13行,这导致跳过循环的其他部分,跳转到第8行继续执行。
如果变量counter能被15整除,就不执行continue语句,而执行循环中的第15~16行,即显示counter的值,并将变量multiples递增。
正如这些循环表明的,对于同一个任务,C++经常提供了多种完成任务的方式。您可根据喜好选择使用的方式,只要编写的程序能够满足需要。