《循环结构程序设计C语言程序.ppt》由会员分享,可在线阅读,更多相关《循环结构程序设计C语言程序.ppt(92页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、 While、do-while、for语句 循环嵌套 Break、continue、goto语句 exit()函数 循环结构类型的选择及转换 循环结构程序设计举例 本章小结u学习目标学习目标 理解循环结构的含义;掌握C语言三种循环结构的特点;掌握while、do-while、for、goto、break、continue语句的使用方法;掌握不同循环结构的选择及其转换方法;掌握混合控制结构程序设计的方法。u学习内容学习内容 5.1 5.1 循环结构的程序设计循环结构的程序设计 1.while1.while1.while1.while语句语句语句语句 一般形式:一般形式:一般形式:一般形式:whi
2、le(while(表达式表达式表达式表达式)循环体语句;循环体语句;循环体语句;循环体语句;执行流程:执行流程:执行流程:执行流程:F F T Texprexpr循环体循环体循环体循环体whilewhile其中:其中:其中:其中:l l whilewhilewhilewhile后面的括号(后面的括号(后面的括号(后面的括号()不能省。)不能省。)不能省。)不能省。l l whilewhilewhilewhile后面的表达式可以是任意类型后面的表达式可以是任意类型后面的表达式可以是任意类型后面的表达式可以是任意类型的表达式,但一般是条件表达式或逻辑的表达式,但一般是条件表达式或逻辑的表达式,但一
3、般是条件表达式或逻辑的表达式,但一般是条件表达式或逻辑表达式。表达式。表达式。表达式。l l 表达式的值是是循环的控制条件。表达式的值是是循环的控制条件。表达式的值是是循环的控制条件。表达式的值是是循环的控制条件。l l 语句部分称为循环体,当需要执行多语句部分称为循环体,当需要执行多语句部分称为循环体,当需要执行多语句部分称为循环体,当需要执行多条语句时,应使用复合语句条语句时,应使用复合语句条语句时,应使用复合语句条语句时,应使用复合语句。特点:先判断表达式,再执行循环体特点:先判断表达式,再执行循环体特点:先判断表达式,再执行循环体特点:先判断表达式,再执行循环体l说明:循环体有可能一次
4、也不执行循环体如包括有一个以上的语句,则必须用 括起来,组成复合语句。下列情况,退出while循环条件表达式不成立(为零)循环体内遇break,return,goto无限循环:while(1)循环体;【例【例【例【例5-15-15-15-1】用用用用whilewhilewhilewhile语句求语句求语句求语句求1 1 1 1100100100100的累计和。的累计和。的累计和。的累计和。#include#include void main()void main()int i=1,sum=0;int i=1,sum=0;while(i=100)while(i=100)sum+=i;sum+=i
5、;i+;i+;printf(sum=%dn,sum);printf(sum=%dn,sum);循环初值循环初值循环初值循环初值循环终值循环终值循环终值循环终值循环条件循环条件循环条件循环条件循环体循环体循环体循环体循环变量增值循环变量增值循环变量增值循环变量增值运行结果:运行结果:运行结果:运行结果:运行结果:运行结果:sum=5050sum=5050sum=5050注意:注意:循环要赋初值,初值要放在循环体外。【例【例【例【例6-1p6-1p6-1p6-1p】显示】显示】显示】显示1 1 1 110101010的平方的平方的平方的平方#include#include void main()v
6、oid main()int i=1;int i=1;while(i=10)while(i 0)while(a 0)/a 0/a 0为假,为假,为假,为假,b+b+不可能执行不可能执行不可能执行不可能执行 b+;b+;(4)(4)(4)(4)在执行在执行在执行在执行whilewhilewhilewhile语句之前,循环控制变量必须初始化,语句之前,循环控制变量必须初始化,语句之前,循环控制变量必须初始化,语句之前,循环控制变量必须初始化,否则执行的结果将是不可预知的。否则执行的结果将是不可预知的。否则执行的结果将是不可预知的。否则执行的结果将是不可预知的。(5)(5)(5)(5)要在要在要在要在
7、whilewhilewhilewhile语句的某处(表达式或循环体内)改变语句的某处(表达式或循环体内)改变语句的某处(表达式或循环体内)改变语句的某处(表达式或循环体内)改变循环控制变量,否则极易构成死循环。循环控制变量,否则极易构成死循环。循环控制变量,否则极易构成死循环。循环控制变量,否则极易构成死循环。(6)(6)(6)(6)允许允许允许允许whilewhilewhilewhile语句的循环体又是语句的循环体又是语句的循环体又是语句的循环体又是whilewhilewhilewhile语句,从而形语句,从而形语句,从而形语句,从而形成双重循环。成双重循环。成双重循环。成双重循环。whil
8、ewhilewhilewhile语句注意事项:语句注意事项:语句注意事项:语句注意事项:例:计算例:计算例:计算例:计算10!10!10!10!#include#include void main()void main()int i;int i;/i/i应赋初始值应赋初始值应赋初始值应赋初始值1010 long s=1;long s=1;while(i=1)while(i=1)s*=i-;s*=i-;printf(10!=%ldn,s);printf(10!=%ldn,s);i=1;i=1;while(i 100)while(i 100)/死循环,因为死循环,因为死循环,因为死循环,因为i i
9、的值没变化,永远小于的值没变化,永远小于的值没变化,永远小于的值没变化,永远小于100100 sum+=i;sum+=i;printf(sum=%dn,sum);printf(sum=%dn,sum);i=1;i=1;while(i=9)while(i=9)j=1;j=1;while(j=9)while(j=9)printf(%d*%d=%dn,i,j,i*j);printf(%d*%d=%dn,i,j,i*j);j+;j+;i+;i+;while(1)while(1)循环体循环体循环体循环体;main()int a=1,n;printf(n input n:);scanf(%d,&n);wh
10、ile(n-)printf(%d ,a+*2);输入:n=2n-=2a+a=1a+*2 输出:2n=1 a=2n=1 a=2a+a=2a+*2 输出:4n-=0 a=32.do_while2.do_while2.do_while2.do_while语句语句语句语句 一般形式:一般形式:一般形式:一般形式:do do do do 循环体语句;循环体语句;循环体语句;循环体语句;while(while(while(while(表达式表达式表达式表达式););););执行流程:执行流程:执行流程:执行流程:其中:其中:其中:其中:l l whilewhilewhilewhile后面的括号(后面的括号
11、(后面的括号(后面的括号()不能省。)不能省。)不能省。)不能省。l l whilewhilewhilewhile最后面的分号最后面的分号最后面的分号最后面的分号;不能省。不能省。不能省。不能省。l l whilewhilewhilewhile后面的表达式可以是任意类型后面的表达式可以是任意类型后面的表达式可以是任意类型后面的表达式可以是任意类型的表达式,但一般是条件表达式或逻辑的表达式,但一般是条件表达式或逻辑的表达式,但一般是条件表达式或逻辑的表达式,但一般是条件表达式或逻辑表达式。表达式。表达式。表达式。l l 表达式的值是是循环的控制条件。表达式的值是是循环的控制条件。表达式的值是是循
12、环的控制条件。表达式的值是是循环的控制条件。l l 语句部分称为循环体,当需要执行多语句部分称为循环体,当需要执行多语句部分称为循环体,当需要执行多语句部分称为循环体,当需要执行多条语句时,应使用复合语句条语句时,应使用复合语句条语句时,应使用复合语句条语句时,应使用复合语句。F F T Texprexpr循环体循环体循环体循环体dodowhilewhile特点:先执行循环体,再判断表达式特点:先执行循环体,再判断表达式特点:先执行循环体,再判断表达式特点:先执行循环体,再判断表达式【例【例【例【例5.25.25.25.2】用用用用do_whiledo_whiledo_whiledo_whil
13、e语句求语句求语句求语句求1 1 1 1100100100100的累计和。的累计和。的累计和。的累计和。#include#include void main()void main()int i=1,sum=0;int i=1,sum=0;do do sum+=i;sum+=i;i+;i+;while(i=100);while(i 0);while(a 0);(1)(1)(1)(1)如果如果如果如果do-whiledo-whiledo-whiledo-while后的表达式的值一开始就为假,循环后的表达式的值一开始就为假,循环后的表达式的值一开始就为假,循环后的表达式的值一开始就为假,循环体还是要
14、执行一次。体还是要执行一次。体还是要执行一次。体还是要执行一次。(2)(2)(2)(2)在在在在ifififif语句、语句、语句、语句、whilewhilewhilewhile语句中,表达式后面都不能加分号,语句中,表达式后面都不能加分号,语句中,表达式后面都不能加分号,语句中,表达式后面都不能加分号,而在而在而在而在do-whiledo-whiledo-whiledo-while语句的表达式后面则必须加分号,否则将产生语句的表达式后面则必须加分号,否则将产生语句的表达式后面则必须加分号,否则将产生语句的表达式后面则必须加分号,否则将产生语法错误。语法错误。语法错误。语法错误。(3)(3)(3
15、)(3)循环体中的语句可为任意类型的循环体中的语句可为任意类型的循环体中的语句可为任意类型的循环体中的语句可为任意类型的C C C C语句。语句。语句。语句。(4)(4)(4)(4)和和和和whilewhilewhilewhile语句一样,在使用语句一样,在使用语句一样,在使用语句一样,在使用do-whiledo-whiledo-whiledo-while语句时,不要语句时,不要语句时,不要语句时,不要忘记初始化循环控制变量,否则执行的结果将是不可预知的。忘记初始化循环控制变量,否则执行的结果将是不可预知的。忘记初始化循环控制变量,否则执行的结果将是不可预知的。忘记初始化循环控制变量,否则执行
16、的结果将是不可预知的。(5)(5)(5)(5)要在要在要在要在do-whiledo-whiledo-whiledo-while语句的某处(表达式或循环体内)改语句的某处(表达式或循环体内)改语句的某处(表达式或循环体内)改语句的某处(表达式或循环体内)改变循环控制变量的值,否则极易构成死循环。变循环控制变量的值,否则极易构成死循环。变循环控制变量的值,否则极易构成死循环。变循环控制变量的值,否则极易构成死循环。(6)do-while (6)do-while (6)do-while (6)do-while语句也可以组成多重循环,而且也可以和语句也可以组成多重循环,而且也可以和语句也可以组成多重循
17、环,而且也可以和语句也可以组成多重循环,而且也可以和whilewhilewhilewhile语句相互嵌套。语句相互嵌套。语句相互嵌套。语句相互嵌套。例例5.3 while和和dowhile比较比较#include main()int i,sum=0;scanf(%d,&i);do sum+=i;i+;while(i=10);printf(%d,sum);main()int i,sum=0;scanf(%d,&i);while(i=10)sum+=i;i+;printf(%d,sum);输入:输入:1输出:输出:55输出:输出:55输入:输入:11输出:输出:11输出:输出:0Do while语
18、句先执行循环体语句先执行循环体i+,sum=0+11.再判断表达式再判断表达式i=10,不满足,退出。,不满足,退出。While语句先判断表达式语句先判断表达式i=10,不满足,退出,不,不满足,退出,不执行循环体执行循环体当当while后面的表达式的第一次的值为后面的表达式的第一次的值为“真真”时,两种循环得到的结果相同;否则不相同时,两种循环得到的结果相同;否则不相同3.for3.for3.for3.for语句语句语句语句 一般形式:一般形式:一般形式:一般形式:for(for(for(for(表达式表达式表达式表达式1 1 1 1;表达式;表达式;表达式;表达式2 2 2 2;表达式;表
19、达式;表达式;表达式3)3)3)3)循环体语句;循环体语句;循环体语句;循环体语句;执行流程:执行流程:执行流程:执行流程:其中:其中:其中:其中:l l forforforfor后面的括号(后面的括号(后面的括号(后面的括号()不能省。)不能省。)不能省。)不能省。l l 表达式表达式表达式表达式1 1 1 1:一般为赋值表达式,给控一般为赋值表达式,给控一般为赋值表达式,给控一般为赋值表达式,给控制变量赋初值。制变量赋初值。制变量赋初值。制变量赋初值。l l 表达式表达式表达式表达式2 2 2 2:关系表达式或逻辑表达式,关系表达式或逻辑表达式,关系表达式或逻辑表达式,关系表达式或逻辑表达
20、式,循环控制条件。循环控制条件。循环控制条件。循环控制条件。l l 表达式表达式表达式表达式3 3 3 3:一般为赋值表达式,给控一般为赋值表达式,给控一般为赋值表达式,给控一般为赋值表达式,给控制变量增量或减量。制变量增量或减量。制变量增量或减量。制变量增量或减量。l l 表达式之间用分号分隔。表达式之间用分号分隔。表达式之间用分号分隔。表达式之间用分号分隔。l l 语句部分称为循环体,当需要执行多语句部分称为循环体,当需要执行多语句部分称为循环体,当需要执行多语句部分称为循环体,当需要执行多条语句时,应使用复合语句。条语句时,应使用复合语句。条语句时,应使用复合语句。条语句时,应使用复合语
21、句。FTexpr2expr2循环体循环体循环体循环体forforexpr1expr1expr3expr3forforforfor语句很好地体现了正确表达循环结构应注意的三个问题:语句很好地体现了正确表达循环结构应注意的三个问题:语句很好地体现了正确表达循环结构应注意的三个问题:语句很好地体现了正确表达循环结构应注意的三个问题:控制变量的初始化。控制变量的初始化。控制变量的初始化。控制变量的初始化。循环的条件。循环的条件。循环的条件。循环的条件。循环控制变量的更新。循环控制变量的更新。循环控制变量的更新。循环控制变量的更新。【例【例【例【例5-45-45-45-4】用用用用forforforfo
22、r语句求语句求语句求语句求1 1 1 1100100100100的累计和。的累计和。的累计和。的累计和。#include#include void main()void main()int i,sum=0;int i,sum=0;for(i=1;i=100;i+)for(i=1;i=100;i+)sum+=i;sum+=i;printf(sum=%dn,sum);printf(sum=%dn,sum);运行结果:运行结果:运行结果:运行结果:运行结果:运行结果:sum=5050sum=5050sum=5050 forforforfor语句注意事项:语句注意事项:语句注意事项:语句注意事项:例:
23、计算例:计算例:计算例:计算1*2+3*4+5*6+99*1001*2+3*4+5*6+99*100。int i,j;int i,j;long sum=0;long sum=0;for(i=1,j=2;i=99;i=i+2,j=j+2)for(i=1,j=2;i=99;i=i+2,j=j+2)sum+=i*j;sum+=i*j;printf(sum=%ldn,sum);printf(sum=%ldn,sum);(1)(1)(1)(1)表达式表达式表达式表达式1 1 1 1、表达式、表达式、表达式、表达式2 2 2 2、和表达式、和表达式、和表达式、和表达式3 3 3 3可以是任何类型的表可以是
24、任何类型的表可以是任何类型的表可以是任何类型的表达式。比方说,这三个表达式都可以是逗号表达式,即每个表达式。比方说,这三个表达式都可以是逗号表达式,即每个表达式。比方说,这三个表达式都可以是逗号表达式,即每个表达式。比方说,这三个表达式都可以是逗号表达式,即每个表达式都可由多个表达式组成。达式都可由多个表达式组成。达式都可由多个表达式组成。达式都可由多个表达式组成。逗号表达式逗号表达式逗号表达式逗号表达式逗号表达式逗号表达式逗号表达式逗号表达式#include#include void main()void main()int i,sum=0;int i,sum=0;i=1;i=1;for(;
25、i=100;i+)for(;i=100;i+)sum+=i;sum+=i;printf(sum=%dn,sum);printf(sum=%dn,sum);#include#include void main()void main()int i,sum=0;int i,sum=0;i=1;i=1;for(;i=100;)for(;i=100;)sum+=i+;sum+=i+;printf(sum=%dn,sum);printf(sum=%dn,sum);forforforfor语句注意事项:语句注意事项:语句注意事项:语句注意事项:省掉表达式省掉表达式省掉表达式省掉表达式1,31,3省掉表达式省
26、掉表达式省掉表达式省掉表达式1 1 (2)(2)(2)(2)表达式表达式表达式表达式1 1 1 1、表达式、表达式、表达式、表达式2 2 2 2、和表达式、和表达式、和表达式、和表达式3 3 3 3都是任选项,可以都是任选项,可以都是任选项,可以都是任选项,可以省掉其中的一个、两个或全部,但其用于间隔的分号是一个省掉其中的一个、两个或全部,但其用于间隔的分号是一个省掉其中的一个、两个或全部,但其用于间隔的分号是一个省掉其中的一个、两个或全部,但其用于间隔的分号是一个也不能省的。也不能省的。也不能省的。也不能省的。#include#include void main()void main()in
27、t i,sum=0;int i,sum=0;i=1;i=1;for(;)for(;)if(i 100)break;if(i 100)break;sum+=i+;sum+=i+;printf(sum=%dn,sum);printf(sum=%dn,sum);省掉表达式省掉表达式省掉表达式省掉表达式1,2,3,;1,2,3,;不能省不能省不能省不能省main()int i,j,k;for(i=0,j=10;i=j;i+,j-)k=i+j;printf(%d+%d=%dn,i,j,k);表达式1和表达式3可以是逗号表达式,逗号表达式按从左到右原则,取最右边表达式的值0+10=101+9=102+8=
28、103+7=104+6=105+5=10注意:注意:i=0,j=10表达式值:表达式值:10但但i=0 j=10依然被赋值依然被赋值 forforforfor语句注意事项:语句注意事项:语句注意事项:语句注意事项:for(a=1;a+)for(a=1;a+)printf(&dn,a);printf(&dn,a);(3)(3)(3)(3)表达式表达式表达式表达式2 2 2 2如果为空则相当于表达式如果为空则相当于表达式如果为空则相当于表达式如果为空则相当于表达式2 2 2 2的值是真的值是真的值是真的值是真。死循环!死循环!死循环!死循环!(4)(4)(4)(4)循环体中的语句可为任意类型的循环
29、体中的语句可为任意类型的循环体中的语句可为任意类型的循环体中的语句可为任意类型的C C C C语句。语句。语句。语句。(5)for (5)for (5)for (5)for语句也可以组成多重循环,而且也可以和语句也可以组成多重循环,而且也可以和语句也可以组成多重循环,而且也可以和语句也可以组成多重循环,而且也可以和whilewhilewhilewhile语语语语句和句和句和句和do-whiledo-whiledo-whiledo-while语句相互嵌套。语句相互嵌套。语句相互嵌套。语句相互嵌套。(6)(6)(6)(6)循环体可以是空语句。循环体可以是空语句。循环体可以是空语句。循环体可以是空语
30、句。例:计算用户输入的字符数(当输入是回车例:计算用户输入的字符数(当输入是回车例:计算用户输入的字符数(当输入是回车例:计算用户输入的字符数(当输入是回车符时统计结束符时统计结束符时统计结束符时统计结束)。#include#include void main()void main()int n=0;int n=0;printf(input a string:n);printf(input a string:n);for(;getchar()!=n;n+)for(;getchar()!=n;n+);printf(%d,n);printf(%d,n);表示循环体为空语表示循环体为空语表示循环体为
31、空语表示循环体为空语句,并非表示句,并非表示句,并非表示句,并非表示forforforfor语语语语句结束句结束句结束句结束 (7)(7)(7)(7)无限循环无限循环无限循环无限循环:for(;):for(;):for(;):for(;)相当于:相当于:相当于:相当于:while(1)while(1)while(1)while(1)语句语句语句语句(8)for(8)for(8)for(8)for语句可以转换成语句可以转换成语句可以转换成语句可以转换成whilewhilewhilewhile结构结构结构结构expr1;while(expr2)循环体语句;expr3;例 用for循环求#inclu
32、de main()int i,sum=0;for(i=1;i=100;i+)sum+=i;printf(%d,sum);for(i=1;i=100;i+)sum=sum+i;等同于等同于i=1;while(i=100)sum=sum+i;i+;例1:(用for循环实现)计算s=1+2+3+n (n1)例2:说明以下循环语句的循环次数。(1)for(i=0;i=0;i-);答:(3)(3)i=1;while(in)+i;答:(4)(4)i=4;do i-;while(i0);答:(5)(5)m=5;while(mj;i+,j-);答:n-1次n+1次n-1次1次0次0次for(k=1;k=0);
33、(4)答:(5)(2)s=0;for(i=0,j=100;i=j;i+,j-)s+=i+j;(6)printf(“%d”,s);(7)答:2,1,0,-15100显然,i+j100,i从0到50,共循环51次例3:分析以下程序的输出结果练习练习例例1:计算:计算s=1+2+3+n (n1)#include“stdio.h”main()int s,k,n;printf(“Input n=“);scanf(“%d”,&n);s=0;k=1;/*L1*/while(k=n)s+=k;k+;/*L2*/printf(“s=%dn”,s);程序中,程序中,/*L2*/行可以简化为行可以简化为 while
34、(k=n)s+=k+;则可省去复合词句。则可省去复合词句。练习练习问题与思考:问题与思考:(1)/*L1*/行行中,若令中,若令k的初值为的初值为0,请填空请填空:(2)s=0;k=0;(3)while()s+=k+;(4)答:答:(5)(2)将将/*L2*/行进行如下改动,请填空:行进行如下改动,请填空:(6)s=0;k=;(7)while()k+;s+=k;(8)答:答:s=0;k=1;/*L1*/while(k=n)s+=k;k+;/*L2*/练习练习应填入应填入 k=n或或kn+1第一空应填入第一空应填入 0,或或-1第二空应填入第二空应填入kn或或k=n-1s=1+2+ns=0+1+
35、2+nk=0 k+=1k=-1 k+=0 三种循环可互相嵌套三种循环可互相嵌套三种循环可互相嵌套三种循环可互相嵌套,层数不限层数不限层数不限层数不限 外层循环可包含两个以上内循环外层循环可包含两个以上内循环外层循环可包含两个以上内循环外层循环可包含两个以上内循环,但不能相互交叉但不能相互交叉但不能相互交叉但不能相互交叉 嵌套循环的执行流程嵌套循环的执行流程嵌套循环的执行流程嵌套循环的执行流程(1)while()(1)while()while()while().(2)do(2)do do do while();while();.while();while();(3)while()(3)while
36、()do do while();while();.嵌套循环的跳转嵌套循环的跳转嵌套循环的跳转嵌套循环的跳转禁止:禁止:禁止:禁止:l l 从外层跳入内层从外层跳入内层从外层跳入内层从外层跳入内层l l 跳入同层的另一循环跳入同层的另一循环跳入同层的另一循环跳入同层的另一循环l l 向上跳转向上跳转向上跳转向上跳转4.4.4.4.循环嵌套循环嵌套循环嵌套循环嵌套 (4)for(;)(4)for(;)do do while();while();while()while().外循环外循环外循环外循环内循环内循环内循环内循环内循环内循环内循环内循环例 循环嵌套,输出九九表123456789123456
37、7892468101214161836912151821242791827364554637281.ij#include main()int i,j;for(i=1;i10;i+)printf(%4d,i);printf(n-n);for(i=1;i10;i+)for(j=1;j10;j+)printf(j=9)?%4dn:%4d,i*j);1.i=1,j=1 i*j=1*1=12.i=1 j=2 i*j=1*2=23.i=1 j=9 i*j=9 换行4.i=1,j=10 内循环结束 i=2,j=1外循环赋初值,先做内循环,内循环结束,跳转到外循环,外循环改变初值,再做内循环。依次类推,直到外
38、循环也不被满足,则跳出整个循环i10i10printfprintf假假假假(0)(0)(0)(0)真真真真(非非非非0)0)0)0)i=1i=1j+j+j=1j=1j10j10真真真真(非非非非0)0)0)0)假假假假(0)(0)(0)(0)i+i+外循环外循环外循环外循环内循环内循环内循环内循环for(i=1;i10;i+)for(i=1;i10;i+)for(j=1;j10;j+)for(j=1;j10;j+)printf(j=9)?%4dn:%4d,i*j);printf(j=9)?%4dn:%4d,i*j);1.i=1,j=1 i*j=1*1=12.i=1 j=2 i*j=1*2=23
39、.i=1 j=9 i*j=9 换行换行4.i=1,j=10 内循环结束内循环结束 i=2,j=1几种循环的比较四种循环都可以用来处理同一个问题,一般可以互相代四种循环都可以用来处理同一个问题,一般可以互相代替。但一般不提倡用替。但一般不提倡用goto型循环。型循环。while和和do-while循环,循环体中应包括使循环趋于循环,循环体中应包括使循环趋于结束的语句。结束的语句。for语句功能最强。语句功能最强。用用while和和do-while循环时,循环变量初始化的操作循环时,循环变量初始化的操作应在应在while和和do-while语句之前完成,而语句之前完成,而for语句可语句可以在表达
40、式以在表达式1中实现循环变量的初始化。中实现循环变量的初始化。5.5.5.5.breakbreak与与与与continuecontinue语句语句语句语句 breakbreakbreakbreak语句语句语句语句功能:功能:功能:功能:在循环语句和在循环语句和在循环语句和在循环语句和switchswitchswitchswitch语句中语句中语句中语句中,终止并跳出循环体终止并跳出循环体终止并跳出循环体终止并跳出循环体或开关体或开关体或开关体或开关体说明:说明:说明:说明:(1)break(1)break(1)break(1)break不能用于循环语句和不能用于循环语句和不能用于循环语句和不能
41、用于循环语句和switchswitchswitchswitch语句之外的语句之外的语句之外的语句之外的任何其它语句之中。任何其它语句之中。任何其它语句之中。任何其它语句之中。(2)break(2)break(2)break(2)break只能只能只能只能终止并跳出终止并跳出终止并跳出终止并跳出最近一层最近一层最近一层最近一层的结构的结构的结构的结构。(3)break(3)break(3)break(3)break语句对语句对语句对语句对if-elseif-elseif-elseif-else的条件语句不起作用。的条件语句不起作用。的条件语句不起作用。的条件语句不起作用。while(while(
42、表达式表达式表达式表达式1)1)if(if(表达式表达式表达式表达式2)2)break;break;语句语句语句语句dodo if(if(表达式表达式表达式表达式2)2)break;break;while(while(表达式表达式表达式表达式1);1);语句语句语句语句for(;for(;表达式表达式表达式表达式1;)1;)if(if(表达式表达式表达式表达式2)2)break;break;语句语句语句语句5.7.1 用用break语句提前终止循环语句提前终止循环 例例5.4 在全系在全系1000学生中,征集慈善学生中,征集慈善募捐,当总数达到募捐,当总数达到10万元时就结束,万元时就结束,统
43、计此时捐款的人数,以及平均每人统计此时捐款的人数,以及平均每人捐款的数目。捐款的数目。5.7.1 用用break语句提前终止循环语句提前终止循环编程思路:编程思路:u循环次数不确定,但最多循环循环次数不确定,但最多循环1000次次l在循环体中累计捐款总数在循环体中累计捐款总数l用用if语句检查是否达到语句检查是否达到10万元万元l如果达到就不再继续执行循环,终止累加如果达到就不再继续执行循环,终止累加u计算人均捐款数计算人均捐款数5.7.1 用用break语句提前终止循环语句提前终止循环编程思路:编程思路:u变量变量amount,用来存放捐款数,用来存放捐款数u变量变量total,用来存放累加
44、后的总捐款数,用来存放累加后的总捐款数u变量变量aver,用来存放人均捐款数,用来存放人均捐款数u定义符号常量定义符号常量SUM代表代表100000#include#define SUM 100000int main()float amount,aver,total;int i;for(i=1,total=0;i=SUM)break;aver=total/i;printf(“num=%dnaver=%10.2fn“,i,aver);return 0;指定符号常量指定符号常量SUM代表代表100000#include#define SUM 100000int main()float amount
45、,aver,total;int i;for(i=1,total=0;i=SUM)break;aver=total/i;printf(“num=%dnaver=%10.2fn“,i,aver);return 0;应该执行应该执行1000次次#include#define SUM 100000int main()float amount,aver,total;int i;for(i=1,total=0;i=SUM)break;aver=total/i;printf(“num=%dnaver=%10.2fn“,i,aver);return 0;达到达到10万,万,提前结束循环提前结束循环#inclu
46、de#define SUM 100000int main()float amount,aver,total;int i;for(i=1,total=0;i=SUM)break;aver=total/i;printf(“num=%dnaver=%10.2fn“,i,aver);return 0;实际捐款人数实际捐款人数exprbreak;假(0)真(非0)whiledobreak;.expr假(0)真(非0)while 方法:方法:方法:方法:通过设置一标志通过设置一标志通过设置一标志通过设置一标志变量变量变量变量tagtag,然后在每层循环,然后在每层循环,然后在每层循环,然后在每层循环后加上
47、一条语句:后加上一条语句:后加上一条语句:后加上一条语句:if(tag)if(tag)break;break;其值为其值为其值为其值为1 1表示跳出循表示跳出循表示跳出循表示跳出循环体,为环体,为环体,为环体,为0 0则不跳出。则不跳出。则不跳出。则不跳出。for()for()while()while()if()break;if()break;while while循环后的第一条语句循环后的第一条语句循环后的第一条语句循环后的第一条语句 int tag=0;int tag=0;for()for()while()while()if()if()tag=1;tag=1;break;break;if(
48、tag)break;if(tag)break;forfor循环后的第一条语句循环后的第一条语句循环后的第一条语句循环后的第一条语句 多重循环中,多重循环中,多重循环中,多重循环中,breakbreak的使用的使用的使用的使用问:在嵌套循环的问:在嵌套循环的问:在嵌套循环的问:在嵌套循环的情况下,如何让情况下,如何让情况下,如何让情况下,如何让breakbreakbreakbreak语句跳出最外语句跳出最外语句跳出最外语句跳出最外层的的循环体?层的的循环体?层的的循环体?层的的循环体?continuecontinuecontinuecontinue语句语句语句语句功能:功能:功能:功能:结束本次
49、循环,跳过结束本次循环,跳过结束本次循环,跳过结束本次循环,跳过循环体中循环体中循环体中循环体中尚未执行的语句,尚未执行的语句,尚未执行的语句,尚未执行的语句,进行下一次是否执行循环体的判断。进行下一次是否执行循环体的判断。进行下一次是否执行循环体的判断。进行下一次是否执行循环体的判断。说明:说明:说明:说明:(1)(1)(1)(1)仅仅仅仅用于循环语句中用于循环语句中用于循环语句中用于循环语句中。(2)(2)(2)(2)在嵌套循环的情况下,在嵌套循环的情况下,在嵌套循环的情况下,在嵌套循环的情况下,continuecontinuecontinuecontinue语句只对包含语句只对包含语句只
50、对包含语句只对包含它的它的它的它的最内层最内层最内层最内层的循环体语句起作用。的循环体语句起作用。的循环体语句起作用。的循环体语句起作用。for()for()while()while()if()if()continue;continue;while while循环后的第一条语句循环后的第一条语句循环后的第一条语句循环后的第一条语句 break和和continue的区别的区别(1)break能用于循环语句和能用于循环语句和switch语句中,语句中,continue只能用于循环语句中。只能用于循环语句中。(2)continue语句的作用是跳过循环本中剩余的语句而语句的作用是跳过循环本中剩余的语句