1、第5章 循环结构程序设计v 循环结构概述循环结构概述v gotogoto语句及用语句及用gotogoto语句构成循环语句构成循环v 三种循环三种循环whilewhile、do-whiledo-while、forforv 循环的嵌套循环的嵌套v 几种循环的比较几种循环的比较v Break Break语句和语句和continuecontinue语句语句v 应用举例应用举例5.0 循环结构导入循环结构导入 在程序设计中含有在程序设计中含有循环循环结构的问题是大量存在的结构的问题是大量存在的 对输入的对输入的1010个整数求和,怎么编程?个整数求和,怎么编程?对输入的对输入的100100个整数求和,怎
2、么编程?个整数求和,怎么编程?以上问题以上问题可以引出一个概念可以引出一个概念“循环循环”,简单而言:简单而言:循环循环就是不断反复地执行同一就是不断反复地执行同一段程序。段程序。C语言可实现的循环:语言可实现的循环:用用goto 和和 if 构成循环构成循环 while 语句语句 do while 语句语句 for 语句语句不提倡不提倡当型循环当型循环先判先判断后执行断后执行直到型循环直到型循环先先执行后判断执行后判断多功能多功能goto语句及用语句及用goto语句构成循环语句构成循环一般形式:一般形式:语句标号语句标号:语句:语句 .goto 语句标号;语句标号;1.功能是无条件转到功能是
3、无条件转到语句语句标号处。标号处。2.用途:用途:与与if语句一起构成循环结构;语句一起构成循环结构;从循环体中跳到循环体外。从循环体中跳到循环体外。3.因为滥用因为滥用goto语句会破坏结构化,所以应限制使用语句会破坏结构化,所以应限制使用。说明:说明:语句标号:语句标号:1.用于定义程序中的某个用于定义程序中的某个位置。位置。2.用标识符表示,开头不用标识符表示,开头不能是数字。能是数字。如:如:goto 3t;错误错误 goto t3;正确正确3.只能加在可执行语句前只能加在可执行语句前面。面。goto语句及用语句及用goto语句构成循环语句构成循环用用if语句和语句和goto语句构成循
4、环语句构成循环1001kksum例例1 1 计算计算#include main()int i,sum=0;i=1;loop:if(i=100)sum+=i;i+;goto loop;printf(%d,sum);sum=sum+1=1sum=sum+2=3sum=sum+3=6sum=sum+4=10sum=sum+100=5050循环初值循环初值循环终值循环终值循环变量增值循环变量增值循环条件循环条件循环体循环体分析分析:这是一个累加求和的问题:这是一个累加求和的问题 sum=1+2+3+100 用用while语句实现当型循环语句实现当型循环表达式表达式循环体循环体 当表达式的值为真(非当表
5、达式的值为真(非0)时,执行其中的内嵌语句(循环体),)时,执行其中的内嵌语句(循环体),然后回过头来再判断表达式的值,如此重复;当表达式为假(然后回过头来再判断表达式的值,如此重复;当表达式为假(0)时结)时结束循环。束循环。5.1 while 语句语句一般形式:一般形式:while(表达式表达式)循环体语句循环体语句表达式表达式循环体循环体假假(0)真真(非非0)执行过程:执行过程:先判断表达式,后执行循先判断表达式,后执行循环体环体。循环控制循环控制表达式表达式循环控制循环控制变量变量循环体循环体注意:注意:循环体有可能一次也不执行。循环体有可能一次也不执行。循环前,必须给循环控制变量赋
6、循环前,必须给循环控制变量赋初值。初值。若循环体包含一条以上的语句,若循环体包含一条以上的语句,应以复合语句形式出现。应以复合语句形式出现。循环体中,必须有改变循环控制循环体中,必须有改变循环控制变量值的语句(使循环趋向结束的变量值的语句(使循环趋向结束的语句)。语句)。无限循环无限循环:while(1)while(1)循环体循环体;循环体为空循环体为空 如:如:while(c=getchar()!=A);从键从键盘输入字符直到输入盘输入字符直到输入A为止为止等价于等价于:c=getchar();while(c!=A)c=getchar();5.1 while 语句语句一般形式:一般形式:wh
7、ile(表达式表达式)循环体语句循环体语句例如:例如:k=1;s=0;while(k=100)s=s+k;k+;分析分析:累加求和的问题:累加求和的问题 s=1+2+3+100s=0s=s+1s=s+2s=s+3和的和的新值新值s=s+k和的当和的当前值前值求和项求和项当前值当前值1001kkS例例1 1 用用while语句语句计算计算#include main()int k,s;s=0;k=1;while(k=100)s=s+k;k+;printf(s=%d,s);注意:注意:s、k的初值的初值及位置及位置s=0,k=1当当k100 s=s+k k=k+1用用do-while语句实现直到型循
8、环语句实现直到型循环 执行循环体,当表达式的值为真(非执行循环体,当表达式的值为真(非0)时,再次执行循环体,如)时,再次执行循环体,如此重复;当表达式为假(此重复;当表达式为假(0)时结束循环。)时结束循环。5.2 do-while 语句语句一般形式:一般形式:do 循环体语句循环体语句while(表达式表达式);表达式表达式循环体循环体假假(0)真真(非非0)执行过程:执行过程:先执行循环体,后判断表达先执行循环体,后判断表达式式。循环体至少执行一次。循环体至少执行一次。do-while语句语句可转化成可转化成while语句。语句。表达式表达式循环体循环体;不可省略!不可省略!切记!切记!
9、1001kkS例例1 1 用用do-while语句语句计算计算#include main()int k,s;s=0;k=1;while(k=100)s=s+k;k+;printf(s=%d,s);#include main()int k,s;s=0;k=1;do s=s+k;k+;while(k=100);printf(s=%d,s);s=0,k=1 s=s+k k=k+1 当当k=100适合于循环次数确定或不定适合于循环次数确定或不定5.3 for 语句语句一般形式:一般形式:执行过程:执行过程:for(表达式表达式1;表达式表达式2;表达式表达式3)循环体语句循环体语句求解表达式求解表达式
10、1循环体语句循环体语句求解表达式求解表达式3下一语句下一语句表达式表达式2 2真真(非非0)假假(0)说明:说明:表达式表达式1在进入循环之前求解在进入循环之前求解(循环变量赋初值)(循环变量赋初值)for语句语句可转化成可转化成while语句。语句。5.3 for 语句语句最简单的应最简单的应用形式:用形式:for(循环变量赋初值循环变量赋初值;循环条件循环条件;循环变量增值循环变量增值)循环体语句循环体语句例如:例如:for(i=1;i=100;i+)sum+=i;一般形式:一般形式:for(表达式表达式1;表达式表达式2;表达式表达式3)循环体语句循环体语句for(表达式表达式1;表达式
11、表达式2;表达式表达式3)循环体语句循环体语句这个分号这个分号不能移走不能移走表达式表达式1 1表达式表达式3可以移到循可以移到循环体语句的后边环体语句的后边这个分号这个分号不能丢掉不能丢掉表达式表达式2为空,则不为空,则不判断循环条件,成判断循环条件,成无限循环无限循环 表达式表达式3 3;for循环的其他形式循环的其他形式:1.表达式表达式1省略时,应在省略时,应在for前给循环变量赋初值。前给循环变量赋初值。如:如:k=1;for(;k=3;k+)s=s+k;2.表达式表达式2省略时,不判断循环条件,将成为省略时,不判断循环条件,将成为“死循环死循环”,需要,需要在循环体中引入在循环体中
12、引入break语句以退出循环语句以退出循环3.表达式表达式3省略时,循环体内应有使循环条件改变的语句。省略时,循环体内应有使循环条件改变的语句。如:如:for(k=1;k=3;)s=s+k;k+;for循环的说明循环的说明:4.同时省略表达式同时省略表达式1和表达式和表达式3,只有表达式,只有表达式2,此时相当于,此时相当于while语句。如语句。如 k=1;for(;k=100;)s=s+k;k+;k=1;while(k=100)s=s+k;k+;for循环的说明循环的说明:5.表达式表达式2一般是关系表达式或逻辑表达式,但也可以是数值表一般是关系表达式或逻辑表达式,但也可以是数值表达式或字
13、符表达式,只要其值不等于达式或字符表达式,只要其值不等于0就执行循环体。就执行循环体。如:如:for(k=1;k-4;k+)s=s+k;仅当仅当k的值等于的值等于4时终止循环。时终止循环。k-4是数值表达式。是数值表达式。1001kkS例例1 1 用用for语句语句计算计算#include main()int k,s;s=0;k=1;while(k=100)s=s+k;k+;printf(s=%d,s);#include main()int k,s;s=0;k=1;do s=s+k;k+;while(k=100);printf(s=%d,s);#include main()int k,s;s=
14、0;for(k=1;k=100;k+)s=s+k;printf(s=%d,s);5.4 3种循环的比较种循环的比较while(表达式表达式)循环体语句循环体语句do 循环体语句循环体语句while(表达式表达式);for(表达式表达式1;表达式表达式2;表达式表达式3;)循环体语句循环体语句循环控制条件循环控制条件也可在循环体内也可在循环体内改变循环控制变量值改变循环控制变量值关于循环的控制:关于循环的控制:循环控制变量初循环控制变量初始化始化也可在也可在for前前5.4 3种循环的比较种循环的比较3.一种循环可以解决的问题,使用另外两种同样可行,一种循环可以解决的问题,使用另外两种同样可行,
15、只是方便程度不同。只是方便程度不同。4.while循环一般用于循环次数不定的情况,循环一般用于循环次数不定的情况,for循环一般循环一般用于循环次数确定的情况用于循环次数确定的情况(也可以用于循环次数不定的也可以用于循环次数不定的情况情况),do-while循环一般用于至少需要执行一次的情循环一般用于至少需要执行一次的情况。况。5.for循环和循环和while循环是先判断条件是否为真,再执行循循环是先判断条件是否为真,再执行循环体,因此,可出现循环一次也不执行的情况;环体,因此,可出现循环一次也不执行的情况;do-while循环是先执行循环体,再判断条件是否为真,因循环是先执行循环体,再判断条
16、件是否为真,因此,循环体至少执行一次。此,循环体至少执行一次。6.while循环、循环、do-while循环、循环、for循环,可以用循环,可以用break语语句跳出循环,用句跳出循环,用continue语句结束本次循环。语句结束本次循环。5.4 3种循环的嵌套种循环的嵌套1.一个循环体内包含着另一个完整的循环结构,就称为嵌套循环。一个循环体内包含着另一个完整的循环结构,就称为嵌套循环。2.内嵌的循环中又可以嵌套循环,从而构成多重循环。内嵌的循环中又可以嵌套循环,从而构成多重循环。3.三种循环可以相互嵌套。下面几种都是合法的嵌套形式:三种循环可以相互嵌套。下面几种都是合法的嵌套形式:(1)wh
17、ile()while().(4)while()do while();.(5)for(;)while().(3)for()for(;).(6)do for(;).while();(2)do do while();.while();1.嵌套的循环控制变量不应同名,以免造成混乱。嵌套的循环控制变量不应同名,以免造成混乱。2.内循环变化快,外循环变化慢。内循环变化快,外循环变化慢。例如:例如:for(i=1;i=9;i+)for(j=1;j2*n并并m3*n则则n为满足条件的三位数为满足条件的三位数例例2 2 试找出满足下列条件的所有的三位数试找出满足下列条件的所有的三位数 其百位数不大于其百位数不大
18、于2 2;若将个位与百位对换,得到的三位数是原三位数的两倍多。若将个位与百位对换,得到的三位数是原三位数的两倍多。main()int i,j,k,n,m,s=0;for(i=1;i=2;i+)for(j=0;j=9;j+)for(k=2;k 2*n&m2*i并并m3*i则则i为满足条件的三位数为满足条件的三位数main()int i,n1,n2,n3,m,s=0;for(i=101;i2*i&m3*i)s+;printf(%d ,i);if(s%10=0)printf(n);5.5 break语句和语句和continue语句语句break语句语句:break;功能:功能:跳出跳出switch结
19、构;在循环语句中结构;在循环语句中,终止并跳出循环体。终止并跳出循环体。说明:说明:break只能只能终止并跳出最近一终止并跳出最近一层的结构。层的结构。break不能用于循环语句和不能用于循环语句和switch语句之外的任何其它语语句之外的任何其它语句之中。句之中。例例3 3 计算计算r=1到到r=10的圆面积,的圆面积,直到面积大于直到面积大于100时停止。时停止。#define PI 3.1415main()int r;float area;for(r=1;r100)break;printf(r=%d,area=%.2fn,r,area);运行结果:运行结果:r=1,area=3.14r
20、=2,area=12.57r=3,area=28.27r=4,area=50.26r=5,area=78.545.5 break语句和语句和continue语句语句continue语句语句:continue;功能:功能:结束本次循环,跳过循环体中尚未执行的语句,进结束本次循环,跳过循环体中尚未执行的语句,进行下一次是否执行循环体的判断。行下一次是否执行循环体的判断。说明:说明:continue仅用于循环语句中仅用于循环语句中。例例4 4 把把100200之间不能被之间不能被3整除的数输出整除的数输出。main()int n;for(n=100;n=200;n+)if(n%3=0)continu
21、e;printf(%d ,n);结束本次循环结束本次循环,循环体的剩余语句被忽略循环体的剩余语句被忽略,执行表达式执行表达式3,进入下一循环。,进入下一循环。continue总是作总是作if的内嵌语句。的内嵌语句。此法更佳此法更佳if(n%3)printf(%d,n);5.6 应用应用举例举例例例5 5 用以下公式计算用以下公式计算的值,直到最后一项的绝对值小于的值,直到最后一项的绝对值小于1 1e-e-6 6为止。为止。分析:分析:分子分子 s:1,-1,1,-1 分母分母 n:1,3,5,7,.1.每项的分母每项的分母,等于前一项分母加等于前一项分母加2,用用n=n+2实现,实现,n的初值
22、为的初值为1。2.每项的符号交替变化,用每项的符号交替变化,用 s=-s实现,实现,s的初值为的初值为+1(第一项为正)。(第一项为正)。3.根据上述,每一项的值根据上述,每一项的值 t=s/n,第第一项的值为一项的值为1。t=1,pi=0,n=1.0,s=1当当|t|1e-6pi=pi+tn=n+2s=-st=s/npi=pi*4输出输出pi5.6 应用应用举例举例例例5 5 用以下公式计算用以下公式计算的值,直到最后一项的绝对值小于的值,直到最后一项的绝对值小于1e-6为止。为止。t=1,pi=0,n=1.0,s=1当当|t|1e-6pi=pi+tn=n+2s=-st=s/npi=pi*4
23、输出输出pi#include main()int s=1;float n,t,pi;t=1.0;n=1.0;pi=0.0;while(fabs(t)=1e-6)pi=pi+t;n=n+2;s=-s;t=s/n;pi=pi*4;printf(pi=%10.6fn,pi);例例6 6 求求Fibonacci数列数列:1,1,2,3,5,8,的前的前40项项。递推公式:。递推公式:分析:分析:1.每次计算并输出两项每次计算并输出两项f1,f2,共进,共进行行20次循环;次循环;2.输出输出f1,f2后,计算得到新的后,计算得到新的f1,f2:f1=f1+f2 f2=f2+f1 -迭代算法迭代算法3.
24、此数列增长很快,输出宜用长整型此数列增长很快,输出宜用长整型(%ld),每行输出四个数,即每输),每行输出四个数,即每输出出4个数后输出一个换行符(个数后输出一个换行符(n)。)。f1=1,f2=1for i=1 to 20输出f1,f2f1=f1+f2f2=f2+f1例例6 6 求求Fibonacci数列数列:1,1,2,3,5,8,的前的前40项项。递推公式:。递推公式:f1=1,f2=1for i=1 to 20输出f1,f2f1=f1+f2f2=f2+f1main()long int f1,f2;int i;f1=1;f2=1;for(i=1;i=20;i+)printf(%12ld%
25、12ld,f1,f2);if(i%2=0)printf(n);f1=f1+f2;f2=f2+f1;例例6 6 求求Fibonacci数列数列:1,1,2,3,5,8,的前的前40项项。递。递推公式:推公式:1534233159710946750255142293524578241578171855377258417711121393832040570288739088169213896104181286571964181346269922746563245986321144987676546368317811217830914930352102334155例例7 7 搬砖问题:搬砖问题:36块
26、砖块砖36人搬,男搬人搬,男搬4女搬女搬3、小孩两个抬、小孩两个抬1砖,要求一次全搬完,问男、女、小孩各若干?砖,要求一次全搬完,问男、女、小孩各若干?分析:分析:设男人、女人、小孩人数各为设男人、女人、小孩人数各为men,women,children,则可得如下方程:则可得如下方程:4*men+3*women+children/2=36 men+women+children=36下面考虑如何寻找另外的约束条件:下面考虑如何寻找另外的约束条件:按常识,按常识,men、women、children都应为正整数,都应为正整数,且它们的取值范围分别应为:且它们的取值范围分别应为:men:08(假设假
27、设36块砖全由块砖全由men搬,最多需搬,最多需8人)人)women:011(假设假设36块砖全由块砖全由women搬,最多需搬,最多需11人)人)children:036(假设假设36块砖全由块砖全由children搬,最多为搬,最多为36人)人)穷举算法穷举算法例例7 7 搬砖问题:搬砖问题:36块砖块砖36人搬,男搬人搬,男搬4女搬女搬3、小孩两个抬、小孩两个抬1砖,要求一次全搬完,问男、女、小孩各若干?砖,要求一次全搬完,问男、女、小孩各若干?本题的细化过程如下:本题的细化过程如下:首先从首先从1开始,列举开始,列举men的各个可能值,在每个的各个可能值,在每个men值下找满足两个值下
28、找满足两个方程的一组解。方程的一组解。算法如下:算法如下:for(men=1;men=8;men+)s1:找满足两个方程的解的找满足两个方程的解的women,children s2:输出一组解输出一组解 下面进一步用细化法来表现下面进一步用细化法来表现S1:for(women=1;women=11;women+)s1.1 找满足方程的一个找满足方程的一个children s1.2 输出一组解输出一组解 例例7 7 搬砖问题:搬砖问题:36块砖块砖36人搬,男搬人搬,男搬4女搬女搬3、小孩两个抬、小孩两个抬1砖,要求一次全搬完,问男、女、小孩各若干?砖,要求一次全搬完,问男、女、小孩各若干?由于
29、每个由于每个men与每个与每个women都可以按下式都可以按下式 children=36-men-women求出一个求出一个children。因此,只要该因此,只要该children满足另一个方程满足另一个方程 4*men+3*women+childs/2=36便可以得到一组满足题意的解便可以得到一组满足题意的解men、women、children。故故S1.1与与S1.2可以写为:可以写为:children=36-men-women;if(4*men+3*women+children/2=36)printf(%d%d%dn,men,women,children);例例7 7 搬砖问题:搬砖问
30、题:36块砖块砖36人搬,男搬人搬,男搬4女搬女搬3、小孩两个抬、小孩两个抬1砖,要求一次全搬完,问男、女、小孩各若干?砖,要求一次全搬完,问男、女、小孩各若干?main()int men,women,children;printf(nmen*women*childrenn);for(men=1;men=8;men+)for(women=1;women=11;women+)children=36-men-women;if(4*men+3*women+children/2=36)printf(%d*,men);printf(%d*,women);printf(%d*n,children);例例7
31、 7 搬砖问题:搬砖问题:36块砖块砖36人搬,男搬人搬,男搬4女搬女搬3、小孩两个抬、小孩两个抬1砖,要求一次全搬完,问男、女、小孩各若干?砖,要求一次全搬完,问男、女、小孩各若干?运行结果运行结果men*women*children1*6*29*(这是一组错误解这是一组错误解)3*3*30*原因:丢失重要条件:原因:丢失重要条件:children应该能够被应该能够被2整除。整除。修改如下:修改如下:if(4*men+3*women+children/2.0=36)或或 if(children%2=0&4*men+3*women+children/2=36)例例7 7 判断正整数判断正整数m
32、是否为素数。是否为素数。什么是素数什么是素数-只能被自身和只能被自身和1整除的自然数。整除的自然数。判断方法判断方法-让让m依次被依次被2,3,4,除,如果除,如果m能被其中的任能被其中的任何一个整数整除,则不是素数。何一个整数整除,则不是素数。m#includemain()int m,i,k;printf(nInput m:n);scanf(%d,&m);k=sqrt(m);for(i=2;ik)printf(%d is a primen,m);else printf(%d is not a primen,m);读入读入mk=sqrt(m)for(i=2;i k 真真假假输出输出:m是素数是
33、素数输出输出:m不是素数不是素数定义变量定义变量m,i,k例例8 8 求求100200之间的全部素数之间的全部素数。在上题的基础上,外层增加一个嵌套的在上题的基础上,外层增加一个嵌套的for循环即可。循环即可。用用n作素数个数的计数,以控制每行输出作素数个数的计数,以控制每行输出10个数。个数。#includemain()int m,i,k;printf(nInput m:n);scanf(%d,&m);k=sqrt(m);for(i=2;ik)printf(%d is a primen,m);else printf(%d is not a primen,m);增加增加 int n=0;for
34、(m=101;m=200;m+=2)删除此行删除此行 删除此行删除此行#includemain()int m,i,k,n=0;for(m=101;m=200;m+=2)k=sqrt(m);for(i=2;ik)printf(%4d,m);n=n+1;if(n%10=0)printf(n);改最后改最后2行行main()int row;for(row=1;row=5;row+)printf(*n);分析:分析:1.1.图形每行的起始位置相同。图形每行的起始位置相同。2.2.每行的字符数相同。每行的字符数相同。3.3.用一重循环控制输出行数即可。用一重循环控制输出行数即可。分析:分析:1.1.每行
35、的起始位置不同,空格数每行的起始位置不同,空格数递减递减1 1。2.2.每行的字符数相同。每行的字符数相同。3.3.用二重循环实现用二重循环实现:外循环控制输出行数外循环控制输出行数;内循环控制输出的空格数。内循环控制输出的空格数。int row,col;替换为替换为例例9 9 打印图形打印图形。for(col=1;col=5-row;col+)printf();printf(*n);替换为替换为main()int row,col;for(row=1;row=5;row+)for(col=1;col=5-row;col+)printf();printf(*n);分析分析:1.1.每行的起始位置
36、不同每行的起始位置不同,空格数空格数:5-row2.2.每行的字符数不同,每行的字符数不同,字符数字符数:2*row-13.3.用二重循环实现用二重循环实现:外循环控制输出行数外循环控制输出行数;两个并列内循环控制输两个并列内循环控制输出每行的出每行的空格数空格数和和字符数字符数例例9 9 打印图形打印图形。请思考:若起始请思考:若起始位置为位置为20,程序,程序如何修改?如何修改?main()int row,col;for(row=1;row=5;row+)for(col=1;col=5-row;col+)printf();for(col=1;col=2*row-1;col+)printf(
37、*);printf(n);分析分析:1.1.需求解阶乘需求解阶乘i!i!2.2.需求解阶乘之和需求解阶乘之和i!i!3.3.一重一重(或二重或二重)循环循环.main()int i,j,n;float sum,term;printf(ninput n:);scanf(%d,&n);for(sum=0,i=1;i=n;i+)for(term=1,j=1;j=i;j+)term*=j;sum=sum+term;printf(nsum=%fn,sum);例例10 10 计算计算s=1!+2!+3!+n!,n从键盘输入从键盘输入 。main()int i,n;float sum=0,term=1;/*
38、int,long,float*/printf(ninput n:);scanf(%d,&n);for(i=1;i=n;i+)term=term*i;/*求求i的阶乘的阶乘*/sum=sum+term;/*累加到累加到sum中中*/printf(nsum=%fn,sum);/*%d,%ld.%f*/例例11 11 循环嵌套,输出九九表循环嵌套,输出九九表。main()int m,n;for(m=1;m=9;m+)for(n=1;n=m;n+)printf(%1dx%1d=%-4d,m,n,m*n);/*-的作用的作用*/printf(n);例例12 12 读入一个字符,当它不是回车符时就输出。读
39、入一个字符,当它不是回车符时就输出。#include /*此行必须有此行必须有 */main()char c;while(c=getchar()!=n)putchar(c);putchar(n);注意:注意:getchar()getchar()仅当遇到仅当遇到回车符时才开始执行,从计回车符时才开始执行,从计算机缓冲区中取字符。算机缓冲区中取字符。如输入如输入Ok!Ok!则输出则输出Ok!Ok!如何仅输出字母?如何仅输出字母?如输入如输入1234china1234china 则输出则输出chinachina#include /*此行必须有此行必须有 */main()char c;while(c=getchar()!=n)if(c=a&c=A&c=Z)putchar(c);putchar(n);小小 结结v 三种循环三种循环whilewhile、do-whiledo-while、forfor的应用的应用范围、各种循环的完整性范围、各种循环的完整性v 循环的嵌套循环的嵌套多重循环多重循环v BreakBreak、continuecontinue的作用的作用v 循环的算法循环的算法:穷举法穷举法搬砖问题搬砖问题、迭代法、迭代法Fibonacci数列数列v 循环结构程序设计举例循环结构程序设计举例作业和上机实验