一、while循环
1、while语句
while循环通用形式:
while(expression)
statement
expression部分使用关系表达式,如果expression为真(非零),执行statement部分一次,然后再次判断expression。在expression为假(0)之前,循环的判断和执行一直进行。每次循环都被称为一次迭代。
statement部分可以是以分号结尾的简单语句,也可以是用花括号括起来的复合语句。
2、while循环终止
只有在对测试条件求值时,才决定终止还是继续循环。
tip:比较浮点数尽量只使用<和>。因为浮点数的舍入误差会导致逻辑上应该相等的两数却不相等。
使用fabs()函数(声明在math.h头文件中)可以方便地比较浮点数,该函数返回一个浮点值的绝对值(即,没有代数符号的值)。
3、无限循环
while(1)
{
…
}
一般而言,所有的非零值都是为真,只有0被视为假。
4、新的_Bool类型
如果把其他非零数值赋给_Boo类型的变量,该变量会被设置成1。
5、关系表达式
简单的关系表达式由关系运算符及其运算对象组成。如果运算关系为真,关系表达式的值为1;如果关系为假,关系表达式的值为0.
二、for循环
#include<stdio.h>
int main(void)
{
const int NUMBER = 22;
int count;
for(count = 1; count <=NUMBER; count++)
printf("Be my valentine!\n");
return 0;
}
关键词for后面的圆括号中有3个表达式,分别用两个分号隔开。
第一个表达式是初始化,只会在for循环开始时执行一次。
第二个表达式是测试条件,在执行循环之前对表达式求值。如果表达式为假,循环结束。
第三个表达式执行更新,每次循环结束时求值。
for循环的灵活性
1、递减计数器
for(secs = 5; secs > 0;secs--)
2、让计数器递增
for(n = 2; n < 60; n = n + 13)
3、用字符替代数字计数
for(ch = 'a'; ch <= 'z';ch++)
4、可以省略一个或多个表达式(但不能省略分号),只要在循环中包含能结束循环的语句即可。
#include<stdio.h>
int main(void)
{
int ans,n;
ans = 2;
for(n = 3;ans <= 25;)
ans = ans * n;
printf("n = %d;ans = %d.\n",n,ans);
return = 0;
}
该程序输出结果如下:
n = 3; ans = 54.
省略的第二个表达式被视为真的话循环会一直运行下去:
for(; ; )
printf("I donot know what I want\n");
5、第一个表达式不一定给变量赋初值,也可以使用printf(),只执行一次。
三、do while循环
do
statement
while(expression);
do while循环在expression为假或0之前重复执行循环体中的内容。do while语句是一种出口条件循环,即在执行完循环体后才根据测试条件决定是否再次执行循环,因此该循环至少必须执行一次。
statement可以时一条简单语句或复合语句。
do while循环以分号结尾