3.9、do-while循环

By | 2015年12月6日

在前面的几篇文章中,我们已经讨论过两种循环了(while和for)

因此,do-while循环也是c语言中三种循环结构中最后的一种了

它的基本结构是

do
{
//循环代码
}
while(循环条件);

在执行的流程上,do-while和for,以及while有一些区别

我们知道,for和while总是在执行循环体之前就检查循环条件是否为真,如果为真才会进入循环

而如果循环条件一开始就为假,那么循环体一次都不会执行

do-while结构则不同

它总是先执行循环体的内容,再去判断要不要进行下一次循环(从他的结构也可以看出这一点,判断条件在循环体之后)

这意味着循环体至少会被执行一次,不管循环条件是否满足

同时,do-while()循环的while()后面是有个分号的!

首先看下面一个程序

#include <stdio.h>
#include <stdlib.h>

int main()
{
    do
    {
        printf("循环!\n");
    }while(0);

    return 0;
}

在c语言中,0值被认为是假,而非零值被认为是真

这就是说,循环的循环条件永远为假

上面的程序则会输出一个“循环”,这和我们上面所说的相符

它首先进入了循环体,再判断条件,以此决定是否再次循环

这种特性在某些情况特别有用,我们将在后面见到

理论上,c语言中三种循环都是可以相互转换的,一种循环能实现,那么另一种循环也能够实现

下面这个程序和3.3、while循环中的例子代码功能相同(),但是是使用do-while改写的

#include <stdio.h>
#include <stdlib.h>

int main()
{
    double Fahrenheit = 0, Celsius = 0;
    printf("摄氏度\t华氏度:\n");

    do
    {
        Celsius = (Fahrenheit - 32)/1.8;   //将华氏度换算成摄氏度
        printf("%.2f\t%.2f\n", Fahrenheit, Celsius);
        Fahrenheit = Fahrenheit + 10;
    }while (Fahrenheit <= 100);
    return 0;
}

可以看到,循环体根本没有变化(但是不是所有情况都像这样循环体和判断条件不发生变化)

while和do-while比较类似,因此,某种程度上,你可以将do-while看作是while的一个变体

你可以尝试do-while写一些需要循环的程序,例如计算1+2+3+…+1000的值

如果你已经掌握了前面的两种循环,学习也do-while不是什么难事!

下一篇见!

发表评论

电子邮件地址不会被公开。 必填项已用*标注