do/while语句

do/while语句的格式是:

do
	语句
while(控制表达式);

它和while类似,其中的语句可以是一个语句块,构成循环体。只不过while是先测试控制表达式的值再执行循环体,而do/while是先执行循环体再测试控制表达式的值。如果控制表达式的值一开始就是假,while的循环体一次都不执行,而do/while的循环体至少会执行一次。其实只要有while这一种循环就足够了,do/while循环和后面要讲的for循环都可以改写成while循环,只不过有些情况下用do/whilefor循环写起来更简便,代码更易读。上面的factorial也可以改用do/while来写:

int factorial(int n)
{
	int result = 1;
	int i = 1;
	do {
		result = result * i;
		i = i + 1;
	} while (i <= n);

	return result;
}

注意do/while这种形式在while(控制表达式)后面一定要加;号,否则编译器无法判断这是一个do/while循环的结尾还是另一个while循环的开头。写循环时一定要注意循环即将结束时控制表达式的临界条件是否准确,上面的循环结束条件如果写成i<n就错了,当i==n时跳出循环,最后的结果中就少乘了一个n。虽然变量名应该尽可能起得有意义一些,不过用i、j、k给循环变量起名是很常见的。

习题

1、在上面的例子中,如果循环结束条件就要写成i<n,还要结果正确,那么前面应该怎么改?