【时时三省】(C语言基础)用do...while语句实现循环
山不在高,有仙则名。水不在深,有龙则灵。 ----CSDN 时时三省
用do...while语句实现循环
除了while语句以外,C语言还提供了do…while语句来实现循环结构。如:
int i = 1;
do
{
printf("%d",i++);
}
while(i<=100)
它的作用是:执行(用do表示“做”)printf语句,然后在while后面的括号内的表达式中检查i的值,当i小于或等于100时,就返回再执行一次循环体( printf语句),直到i大于100为止。执行此do…while语句的结果是输出1 ~ 100,共100个数。请注意分析printf函数中的输出项i + +的作用:
先输出当前i的值,然后再使i的值加1。如果改为printf (”% d”,+ + i ),则是先使i的值加1,然后输出i的新值。若在执行printf函数之前,i的值为1,则printf函数的输出是i的新值2。在本例中do下面的一对花括号其实不是必要的,因为花括号内只有一个语句。可以写成
do
printf (”% d”,i++ );
while ( i < = 100 );
但这样写,容易使人在看到第2行末尾的分号后误认为整个语句结束了。
为了使程序清晰、易读,建议把循环体用花括号括起来。
do…while语句的执行过程是:
先执行循环体,然后再检查条件是否成立,若成立,再执行循环体。这是和while语句的不同。
注意:do…while语句的特点是,先无条件地执行循环体,然后判断循环条件是否成立。
do…while语句的一般形式为
do
语句
while(表达式);
其中的“语句”就是循环体。
先执行一次指定的循环体语句,然后判别表达式,当表达式的值为非零(“真”)时,返回重新执行循环体语句,如此反复,直到表达式的值等于0 (“假”)为止,此时循环结束。
例题:
用do...while语句求1+2 + 3 +…+ 100。
解题思路:
用循环结构来处理。但题目要求用do…while语句来实现循环结构。
编写程序:
运行结果 :
sum=5050
程序分析:
从例题中可以看到:对同一个问题可以用while语句处理,也可以用do...while语句处理。do...while语句结构可以转换成while结构。
在一般情况下,用while语句和用do…while语句处理同一问题时,若二者的循环体部分是一样的,那么结果也一样。
例题2:
while和do…while循环的比较。
( 1 )用while循环:
运行结果(两次):
(2)用do...while循环:
运行结果(两次):
可以看到,当输入i的值小于或等于10时,二者得到的结果相同;而当i > 10时,一者结果就不同了。这是因为此时对while循环来说,一次也不执行循环体(表达式“i < = 10”的值为假),而对do.while循环语句来说则至少要执行一次循环体。可以得到结论,当while后面的表达式的第1次的值为“真”时,两种循环得到的结果相同;否则,二者结果不相同(指二者具有相同的循环体的情况)