在前面的几篇文章中,我们已经讨论过两种循环了(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不是什么难事!
下一篇见!