第五章 循环结构
一、 while语句和用while语句构成的循环结构
循环结构是结构化程序设计中的三种基本结构之一,在c语言中三种可以构成循环结构的循环语句:while,do-while和for语句。
1、whlie循环的一般形式
由while语句构成的循环体也称作“当”循环,while循环的一般形式如下:
While(表达式)  循环体
说明:
1)while是c语言的关键字。
2)while后一对圆括号中的表达式可以是c语言中任意合法的表达式,但不能为空,由它来控制循环体是否执行。
3)在语法上,循环体只能执行一次,但是循环体内有多个语句,应该使用复合语句。
2、while循环的执行过程
while循环的执行过程如下:
1)计算表达式的值。当值为非0时,执行步骤2);当值为0时,执行步骤4)。
2)执行循环体一次。
3)转去执行步骤1)。
4)退出while循环。
不难看出,while循环的循环体执行与否是由圆括号中的表达式来决定的,因此进入while循环后,一定要有能使表达式的值变为0的操作,否则循环将会无限制执行下去,称为无限循环(死循环)。
注意:
1)while语句的循环体可能一次都不执行。(表达式的值一开始就为0)
2)注意区分f分支语句和while循环语句。如果表达式的值为非0,f语句仅执行一次,但是while语句肯能会重复多次。
3)当表达式无条件循环,也就是将表达式的值设为1,此时,在循环体内要有带条件的非正常出口。
3、例题:
1)编写程序,求1+2+3+……+100
Main()
{
int ,sum;
i=1;sum=0;
While(i<=100)
{
Sum+=i;
i++;
}
Printf(“sum=%d\n”,sum);
}
2)用π/4=1-1/3+1/5-1/7+1/9……公式来求π的值,知道最后一项的值的绝对值小于10-4为止。
程序如下:
#include “math.h”  /*调用fabs函数时要求包含math.件*/
while语句都可以用for改写#include <stdio.h>
Main()
{
Float n,t,pi; /*存放分母,每次累加不是一个整数,而是实数,因此要用float定义*/
Int s;
T=1.0;n=1.0;pi=0;
S=1;
While(fabs(t)>=1e-4)
{
Pi=pi+t;
N=n+2;
S=-s;
T=s/n;
}
Pi=4*pi;
Printf(“%f\n”,pi);
}
二、 do-while语句和用do-while语句构成的循环结构
1、do-while语句构成的循环结构
  Do-while循环是先执行循环体,后判断表达式的“直到型”循环,形式如下
  Do
  循环体
  While(表达式);
说明:
1)do是c语言中的关键字,必须和while联合使用。
2)由do开始,while结束,while圆括号后的“;“不可省略。
3)While后的圆括号中的表达式,可以c语言中的任意合法的表达式。
4)按语法,循环体只能是一条可执行语句。若循环体内需要多个语句,应该使用复合语句。
2、do-while循环的执行过程
Do-while循环的执行过程如下:
                            注意:do-while语句总是先执行一次循环体,再求表达式的值
                                  与while语句相同,必须要有能够使while表达式为0的操作
非零
              0
3、用do-while循环来求1+2+3+……+98+99+100的值。
当型 最少执行次数0 
直到型 最少执行次数1
4、和while循环一样,在do-while循环中,一定要有能使while后的表达式的值变为0的操作,否则,循环成为死循环,除非循环体重由带条件的非正常出口(break等)。
三、for语句和用for语句构成的循环结构
1、for语句构成的循环结构
for语句构成的循环结构通常成为for循环。一般形式如下:
1)for(表达式1;表达式2;表达式3) 循环体
注:for是c语言中的关键字,其后的一对圆括号中通常含有三个表达式,各表达式之间用“;“隔开,但是表达式3后没有“;”。这三个表达式可以是任意的表达式,通常用于for循环的控制。循环体语句在语法上要求是一条语句,若在循环体内需要多条语句,应该使用复合语句。
2)也可写作:
for(循环变量初值;循环条件;循环变量增值) 循环体;
3)改写while语句
表达式1
While(表达式2)
{
语句
表达式3
}
2、for循环的执行过程
                                          I=1,s=0;
                                          While(i<=100)
                                          {s+=I,i++;}
                        假(0)
                                          For(i=1,s=0;i<=100;i++)
                  真(非0)              s+=I;
3、说明:
1)for语句中表达式1可以省略,但两个“;“不可省略。
i=3;
for(;i<=100;i++) printf(“%d\n”,i);
2)for语句中表达式2也可以省略,则for语句将无限循环下去。
例:for(i=0;;i++)
{sum+=i;
if(i>=100)break;
}
3)for语句中表达式3也可以省略,但是要将其放入循环体中。否则
For循环将无法正常结束。
4)如果只有表达式2时,就等同于while循环。

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。