C语言中有三种循环:for、while、do while。
1.while循环:while语句创建了一个循环,重复执行直到测试表达式为假或0。while语句是一种入口条件循环,也就是说,在执行多次循环之前已决定是否执行循环。因此,循环有可能不被执行。循环体可以是简单语句,也可以是复合语句。
设计一个程序,使用while循环使得每次输入一个数字进行求和:
long类型中的0是0L,int类型中的0是0,因此给long类型赋值时要给sum初始化为0L。
编译运行:
该程序是利用scanf()的返回值来结束循环的。先看while循环,该循环的测试条件是如下表达式:
status==1
==运算符是C的相等运算符,该表达式判断status是否等于1,只要status等于1,循环就会重复。每次循环,num的当前值都被加到sum上,这样sum的值始终是当前整数之和。当status的值不为1时,循环结束。然后程序打印sum的最终值。
while循环的通用形式:
while(expression)
statement
statement部分可以是以分号结束的简单语句,也可以是用花括号括起来的复合语句。expression是值之间的比较,可以使用任何表达式。如果expression为真,执行statement部分一次,然后再次判断expression。在expression为假(0)之前,循环的判断和执行一直重复进行。每次循环都被称为一次迭代。
关系运算符:关系运算符常用于构造while语句和其他C语句中用到的关系表达式。这些语句都会检查关系表达式为真还是为假。
2.for循环:for语句使用3个表达式控制循环过程,分别用分号隔开。initialize表达式在执行for语句之前只执行一次;然后对test表达式求值,如果表达式为真(或非零),执行循环一次;接着对update表达式求值,并再次检查test表达式。for语句是一种入口条件循环,即在执行循环之前就决定了是否执行循环。因此,for循环可能一次都不执行。statement部分可以是一条简单语句或复合语句。
for循环形式:
for(initialize;test;update)
statement
在test为假或0之前,重复执行statement部分。
示例:设计一个程序打印整数1~6的立方
编译运行:
for循环的第一行包含了循环所需的所有信息:num的初值,num的终值和每次循环num的增量。
新的运算符:
3.do while循环:while循环和for循环都是入口循环,即在循坏的每次迭代之前检查测试条件,所以有可能根本不执行循环体中的内容。C语言还有出口条件循环,即在循环的每次迭代之后检查测试条件,这保证了至少执行循环体中的内容一次。这种循环被称为do while循环。
如下程序:在用户输入13之前会不断提醒用户输入数字。
运行:
while可以翻译成是当的意思,也就是说当后面的条件不满足时,会继续进如do的循环体,而到当后面的条件满足了就进行接下来的语句了。
下面是do while循环的通用形式:
do
statement
while(expression);
statement可以是一条简单语句或复合语句。注意,do while循环以分号结尾。
如何选择循环呢?
首先,确定是需要入口条件循环还是出口条件循环。通常,入口条件循环用得比较多,有几个原因。其一,一般原则是在执行循环之前测试条件比较好。其二,测试放在循环的开头,程序的可读性更高。另外,在许多应用中,要求在一开始不满足测试条件时就直接跳过整个循环。那么,假设需要一个入口条件循环,用for循环还是while循环?这取决于个人喜好,因为二者皆可。一般而言,当循环涉及初始化和更新变量时,用for循环比较合适,而在其他情况下用while循环更好。