1、第第4 4章章 循环程序设计循环程序设计4.1 do循环结构循环结构4.2 while循环结构循环结构4.3 for循环结构循环结构4.4 循环结构的嵌套与退出循环结构的嵌套与退出 在这一章中将介绍在这一章中将介绍C语言程序的语言程序的while、do 及及for 等循环语句的程序结构。循环语句就等循环语句的程序结构。循环语句就是让一句或一段程序不断执行的语句,它是程是让一句或一段程序不断执行的语句,它是程序结构中的一种重要语句格式。序结构中的一种重要语句格式。4.1 do循环结构循环结构 4.1.2 do循环语句 在计算机中很多的程序计算需要重复循环执在计算机中很多的程序计算需要重复循环执行
2、,行,do循环语句就是满足这种要求的语句,其结循环语句就是满足这种要求的语句,其结构如下:构如下:do 语句语句;while(条件条件);该段程序首先执行指定的语句,它可以是一条语句或多该段程序首先执行指定的语句,它可以是一条语句或多条语句,之后判断条件,条件是一个逻辑表达式,它的条语句,之后判断条件,条件是一个逻辑表达式,它的值如为真,则就重复循环执行指定的语句,一直到条件值如为真,则就重复循环执行指定的语句,一直到条件为假为止,该循环才结束,程序的流程如图为假为止,该循环才结束,程序的流程如图4-2所示。所示。图4-2 do循环的流程 1有限次数的循环有限次数的循环 一般在条件中包含一个循
3、环变量,该循环一般在条件中包含一个循环变量,该循环变量在循环语句中是每次都改变的,保证循环变量在循环语句中是每次都改变的,保证循环条件在不断改变,确保条件从开始的真变为最条件在不断改变,确保条件从开始的真变为最后的假,让循环结束,循环语句执行的次数称后的假,让循环结束,循环语句执行的次数称为循环次数,循环次数应该是有限的。为循环次数,循环次数应该是有限的。2死循环死循环 如循环条件一直为真,永远不会变为假,如循环条件一直为真,永远不会变为假,则该循环会循环无限次,出现死循环。程序如则该循环会循环无限次,出现死循环。程序如出现死循环,计算机将永远执行循环语句,别出现死循环,计算机将永远执行循环语
4、句,别的语句将得不到执行,程序得不到正常结束,的语句将得不到执行,程序得不到正常结束,这是应用中要避免的。这是应用中要避免的。4.2 while循环结构循环结构 4.2.1 while循环语句 前面介绍过前面介绍过do循环,这一节介绍一个相似的循循环,这一节介绍一个相似的循环,既环,既while循环。循环。while结构如下:结构如下:while(条件条件)语句语句;其中条件是一个逻辑表达式,它的值为真或假,其中条件是一个逻辑表达式,它的值为真或假,语句可以是一个单一的语句,也可以是一个复合语句可以是一个单一的语句,也可以是一个复合语句。该循环的执行规则是先判断条件是否成立,语句。该循环的执行
5、规则是先判断条件是否成立,之后才决定是否执行循环语句,如条件不成立则之后才决定是否执行循环语句,如条件不成立则结束循环,如条件成立则再次执行循环语句,只结束循环,如条件成立则再次执行循环语句,只要条件成立则一直执行循环语句,程序流程如图要条件成立则一直执行循环语句,程序流程如图4-7所示。所示。图4-7 while循环的流程 前面的前面的do循环是先执行循环语句后才判断循环是先执行循环语句后才判断条件是否成立,因此即便开始时条件不成立也条件是否成立,因此即便开始时条件不成立也会先执行一次。这里会先执行一次。这里while循环不同,循环不同,while循循环是先判断条件后才决定是否执行循环语句,
6、环是先判断条件后才决定是否执行循环语句,当条件不成立时循环不执行。当条件不成立时循环不执行。do循环至少执行循环至少执行一次循环,但一次循环,但while循环可能一次也不执行,除循环可能一次也不执行,除此之外,在实际应用中两者有很多相似之处。此之外,在实际应用中两者有很多相似之处。4.3 for循环结构循环结构 4.3.1 for循环语句循环语句 for循环语句的一般格式为:循环语句的一般格式为:for(变量初始化表达式变量初始化表达式;条件条件;变量变化表达式变量变化表达式)语句;语句;forfor循环的执行规则是:循环的执行规则是:(1)(1)当进入当进入forfor循环时,首先执行变量初
7、始化循环时,首先执行变量初始化表达式,接着就判断条件,如条件不成立,则表达式,接着就判断条件,如条件不成立,则循环一次也不会执行。循环一次也不会执行。(2)(2)如条件成立,则执行循环的语句,循环如条件成立,则执行循环的语句,循环语句可以是单个语句,也可以是复合语句。语句可以是单个语句,也可以是复合语句。(3)(3)变量变化表达式在循环语句执行完成后变量变化表达式在循环语句执行完成后执行,之后回到执行,之后回到(2)(2)。for循环的执行流程如图循环的执行流程如图4-8所示。所示。图4-8 for循环的执行流程 变量初始化表达式一般用来设置变量的初变量初始化表达式一般用来设置变量的初始值,条
8、件表达式是控制循环次数的,只有当始值,条件表达式是控制循环次数的,只有当条件成立时,循环才进行。变量变化表达式控条件成立时,循环才进行。变量变化表达式控制每次循环后变量的变化,这个控制循环的变制每次循环后变量的变化,这个控制循环的变量一般就是循环变量。量一般就是循环变量。4.3.3 几种循环的比较几种循环的比较 从理论上讲从理论上讲do、while及及for循环都可以互循环都可以互相转换与代替,程序可以根据实际问题的需要相转换与代替,程序可以根据实际问题的需要来使用什么样的循环。一般来说,来使用什么样的循环。一般来说,do与与while循环常用于预先不确定循环次数的循环中,而循环常用于预先不确
9、定循环次数的循环中,而for循环更适合用于预先确定循环次数的循环中。循环更适合用于预先确定循环次数的循环中。4.4 循环结构的嵌套与退出循环结构的嵌套与退出 4.4.1 循环结构的嵌套循环结构的嵌套 一个循环的循环语句可以是一个复合语句,一个循环的循环语句可以是一个复合语句,在复合语句中又包含一个循环,这样就出现了在复合语句中又包含一个循环,这样就出现了循环的嵌套。循环的嵌套。4.4.2 多循环的规则多循环的规则 多个循环存在时,只能并列或嵌套,不能多个循环存在时,只能并列或嵌套,不能出现交叉。出现交叉。1 循环并列循环并列 既多个循环按前后顺序的关系出现在同一层上,例如既多个循环按前后顺序的
10、关系出现在同一层上,例如以下的以下的i循环与循环与j循环的关系:循环的关系:for(i=1;i=9;i+)for(j=1;j=9;j+)可以用如图可以用如图4-13所示来形象的表示这种关系。所示来形象的表示这种关系。图4-13循环并列 2 循环嵌套循环嵌套 既一个外层的循环套一个内层的循环,例如以既一个外层的循环套一个内层的循环,例如以下的下的i循环与循环与j循环的关系:循环的关系:for(i=1;i=9;i+)for(j=1;j=9;j+)可以用如图可以用如图4-14所示来形象的表示这种关系。所示来形象的表示这种关系。图4-14循环嵌套 3 循环交叉循环交叉 既一个外层的循环与一个内层的交叉
11、,例如以既一个外层的循环与一个内层的交叉,例如以下的下的i循环与循环与j循环的关系:循环的关系:i=1;doj=1;doprintf(“%d”,i*j);j+;while(i=9);i+;while(j=9);可以用如图可以用如图4-15所示来形象的表示这种关系。所示来形象的表示这种关系。图4-15 循环交叉 一般来说,一个程序中往往会出现多个循一般来说,一个程序中往往会出现多个循环的并列与嵌套的结构,而且嵌套可以有多层。环的并列与嵌套的结构,而且嵌套可以有多层。如图如图4-16所示表示有所示表示有6个循环,其中循环个循环,其中循环1与循与循环环5是并列关系,循环是并列关系,循环2与循环与循环
12、4也是并列关系,也是并列关系,循环循环1套了循环套了循环2与循环与循环4,循环,循环2套了循环套了循环3,循环循环5套了循环套了循环6。图4-16 多循环的并列与嵌套 4.4.3 循环的退出循环的退出 1 break语句语句 break语句用在循环中时会强制退出循环,注语句用在循环中时会强制退出循环,注意在有多层循环时意在有多层循环时break只退出它所对应的那只退出它所对应的那一层的循环,并不是最外层的循环。一层的循环,并不是最外层的循环。2 continue语句语句 continue语句用在循环中时不会强制退出循环,语句用在循环中时不会强制退出循环,但它会跳过循环体中剩余的部分而转去循环的但它会跳过循环体中剩余的部分而转去循环的结尾部分,强制开始下一轮循环。结尾部分,强制开始下一轮循环。