凡是能用while循环处理,都能用do-while循环处理。
在一般情况下,用while语句和用do-while语句处理同一问题时,若二者的循环体部分是一样的,它们的结果也一样。但是如果while后面的判断表达式一开始就为假(0)时,两种循环的结果是不同的。
#include<stdio.h>
int main()
{
int sum = 0, i;
scanf("%d",&i);
while (i<=10)
{
sum = sum + i;
i++;
}
printf("sum=%d\n",sum);
return 0;
}
#include <stdio.h>
int main()
{
int sum = 0, i;
scanf("%d",&i);
do
{
sum = sum + i;
i++;
}while (i<=10);
printf("sum=%d\n",sum);
return 0;
}
通过对比可以发现,当输入 i 的值小于或等于10时,两者得到的结果相同。而当 i >10 时,二者结果就不相同了。这是因为此时对while循环来说,一次也不执行循环体,因为表达式为假,而对do-while循环来说它先要执行一次循环体。从这可以得出结论:当while后面的表达式的第一次值为“1”时,两种循环得到的结果相同;否则,二者结果不相同。