C语言程序设计课件0906循环控制

上传人:29 文档编号:240608908 上传时间:2024-04-24 格式:PPT 页数:44 大小:445.50KB
收藏 版权申诉 举报 下载
C语言程序设计课件0906循环控制_第1页
第1页 / 共44页
C语言程序设计课件0906循环控制_第2页
第2页 / 共44页
C语言程序设计课件0906循环控制_第3页
第3页 / 共44页
资源描述:

《C语言程序设计课件0906循环控制》由会员分享,可在线阅读,更多相关《C语言程序设计课件0906循环控制(44页珍藏版)》请在装配图网上搜索。

1、C语言程序设计课件语言程序设计课件0906循环控制循环控制服从真理,就能征服一切事物while语句语句vwhile语句是基本的循环语句,用来实现语句是基本的循环语句,用来实现“当当型型”循环,格式为:循环,格式为:while(E)Sv其中其中S是循环体,是循环体,E表示循环的准入条件,循表示循环的准入条件,循环的退出条件为环的退出条件为!Evwhile语句的特点是什么?语句的特点是什么?例例1 计算计算1+2+100#include void main()int sum=0,i=1;while(i=100)sum=sum+i;i=i+1;printf(1+2+100=%d n,sum);循环的

2、准入条件循环的准入条件和退出条件是什和退出条件是什么?循环执行了么?循环执行了多少次?多少次?dowhile语句语句vdowhile语句用来实现语句用来实现“直到型直到型”循环,格式循环,格式为:为:do Swhile(E);v其中其中S是循环体,是循环体,E是继续循环的条件,换言是继续循环的条件,换言之,之,!E 是退出循环的条件是退出循环的条件vdowhile语句的特点是什么?语句的特点是什么?例例2 用用dowhile语句改写例语句改写例1#include void main()int sum=0,i=1;do sum+=i;i+;while(i=100);printf(1+2+100=

3、%d n,sum);循环的准入条件循环的准入条件和退出条件是什和退出条件是什么?循环执行了么?循环执行了多少次?多少次?while语句和语句和dowhile语句的比较语句的比较 当型循环当型循环 直到型循环直到型循环 while语句和语句和dowhile语句的比较语句的比较vwhile语句的特点是先判断循环条件是否成立,语句的特点是先判断循环条件是否成立,后执行循环体语句,循环体可能一次也不执后执行循环体语句,循环体可能一次也不执行行vdowhile语句的特点是先执行循环体语句,语句的特点是先执行循环体语句,后判断循环条件是否成立,循环体至少会被后判断循环条件是否成立,循环体至少会被执行一次执

4、行一次for语句语句vfor语句的格式如下:语句的格式如下:for(E1;E2;E3)Sv其中其中S是循环体,表达式是循环体,表达式E1做循环之前的准做循环之前的准备工作,表达式备工作,表达式E2是循环条件,表达式是循环条件,表达式E3做做每次循环的善后工作每次循环的善后工作v这三个表达式之间的分号不表示语句的结尾,这三个表达式之间的分号不表示语句的结尾,而是起分隔作用而是起分隔作用 E1;E2;E3vE1做循环之前的准备工作,例如定义循环变做循环之前的准备工作,例如定义循环变量,为循环变量赋初值,只执行一次量,为循环变量赋初值,只执行一次vE2是循环条件,每次循环前都需要先检测它是循环条件,

5、每次循环前都需要先检测它是否成立,成立则执行是否成立,成立则执行S语句,否则结束循环,语句,否则结束循环,执行执行for循环体下面的一个语句循环体下面的一个语句vE3做每次循环的善后工作,例如修改循环变做每次循环的善后工作,例如修改循环变量的值,使循环趋向于结束量的值,使循环趋向于结束 例例3 用用for语句改写例语句改写例1#include void main()int i,sum=0;for(i=1;i=100;i+)sum=sum+i;printf(1+2+100=%d n,sum);循环的准入条件循环的准入条件和退出条件是什和退出条件是什么?循环执行了么?循环执行了多少次?多少次?对对

6、for语句的说明语句的说明v表达式表达式E1可以省略,此时应在可以省略,此时应在for语句之前给语句之前给循环变量赋初值循环变量赋初值int sum=0,i=1;for(;i=100;i+)sum+=i;v注意:省略注意:省略E1时,其后的分号不能省略时,其后的分号不能省略 对对for语句的说明语句的说明v表达式表达式E2可以省略,即不判断循环条件,也可以省略,即不判断循环条件,也就是认为就是认为E2始终为真,如果循环体中没有退始终为真,如果循环体中没有退出循环的语句,就会造成死循环出循环的语句,就会造成死循环v这时在循环体里必须有判断是否退出循环的这时在循环体里必须有判断是否退出循环的语句语

7、句int i,sum=0;for(i=1;i+)sum+=i;if(i=100)break;/在这里判断是否退出循环在这里判断是否退出循环对对for语句的说明语句的说明v表达式表达式E3可以省略,此时应在循环体中改变可以省略,此时应在循环体中改变循环变量的值,保证循环能正常结束循环变量的值,保证循环能正常结束int i,sum=0;for(i=1;i=100;)sum+=i;i+;/E3挪到这里挪到这里对对for语句的说明语句的说明v表达式表达式E1和和E3可以都被省略,此时就相当于可以都被省略,此时就相当于一个一个while语句语句int sum=0,i=1;for(;i=100;)/类似于

8、类似于while语句语句sum+=i;i+;对对for语句的说明语句的说明v表达式表达式E1,E2和和E3可以都被省略可以都被省略int sum=0,i=1;/在这里初始化两个变量在这里初始化两个变量for(;)/省略省略E1,E2和和E3 sum+=i;i+;/E3挪到这里挪到这里 if(i=101)break;/在这里判断是否退出循环在这里判断是否退出循环对对for语句的说明语句的说明v表达式表达式E1和和E3可以是一个简单的表达式,也可以是一个简单的表达式,也可以是逗号表达式,即包含一个以上的简单可以是逗号表达式,即包含一个以上的简单表达式,中间用逗号隔开表达式,中间用逗号隔开for(s

9、um=0,i=1;i=100;i+)v这里这里“,”是一个双目运算符,称为逗号运算符,是一个双目运算符,称为逗号运算符,其优先级在所有运算符中是最低的其优先级在所有运算符中是最低的对对for语句的说明语句的说明v表达式表达式E3主要用来控制循环变量的步长,可主要用来控制循环变量的步长,可增也可减。也可以将循环控制的部分语句写增也可减。也可以将循环控制的部分语句写入入E3中,使用逗号表达式中,使用逗号表达式for(sum=0,i=1;i=100;sum+=i,i+);v这时循环体中没有任何表达式语句了,但为这时循环体中没有任何表达式语句了,但为了表示循环体的存在,保持循环语句在语法了表示循环体的

10、存在,保持循环语句在语法上的完整性,分号必须保留上的完整性,分号必须保留 对对for语句的说明语句的说明vfor语句虽然用法复杂,但它表达能力强,非语句虽然用法复杂,但它表达能力强,非常灵活常灵活如果在循环之前已经做好了准备工作,如果在循环之前已经做好了准备工作,E1可以省可以省略略如果在循环体中检测循环条件并有退出循环或退如果在循环体中检测循环条件并有退出循环或退出函数的语句,出函数的语句,E2可省略可省略如果在循环体中修改循环变量并做了其他善后工如果在循环体中修改循环变量并做了其他善后工作,作,E3可省略可省略 多重循环多重循环v一个循环体内又包含另一个完整的循环结构,一个循环体内又包含另

11、一个完整的循环结构,称为循环的嵌套称为循环的嵌套v循环体本身也是一个循环语句,就构成多重循环体本身也是一个循环语句,就构成多重循环循环 v3种循环(种循环(while循环、循环、dowhile循环和循环和for循环)可以相互嵌套循环)可以相互嵌套例例4 打印打印6763个国标汉字个国标汉字 v每个国标汉字用两个字节编码,其处理码编码方式每个国标汉字用两个字节编码,其处理码编码方式如下:如下:6763个汉字加上个汉字加上5个空位,共个空位,共6768个码位;个码位;分为分为72区,每个区区,每个区94个码位;个码位;每个汉字的第一个字节表示区号,第二个字节表示位号,每个汉字的第一个字节表示区号,

12、第二个字节表示位号,处理码区号处理码区号176247,位号,位号161254v第一个汉字第一个汉字“啊啊”,编码为,编码为176,161v最后一个汉字最后一个汉字“齄齄”,编码为,编码为247,254例例4 打印打印6763个国标汉字个国标汉字v程序采用两重循环程序采用两重循环:外层循环中用一个循环变量表示区号,初值为外层循环中用一个循环变量表示区号,初值为176,终值为,终值为247,作用是打印每一区,作用是打印每一区内层循环中用另一个循环变量表示位号,初值为内层循环中用另一个循环变量表示位号,初值为161,终值为,终值为254,作用是打印一个区中的每一个,作用是打印一个区中的每一个汉字(或

13、空位)汉字(或空位)v打印一个汉字时,只需连续输出区号和位号打印一个汉字时,只需连续输出区号和位号的字符值(用格式说明符的字符值(用格式说明符“%c”)即可)即可例例4 打印打印6763个国标汉字(包括个国标汉字(包括5个空位)个空位)#include void main()int c1,c2;for(c1=176;c1=247;c1+)/外层循环外层循环 for(c2=161;c2=254;c2+)/内层循环内层循环 printf(“%c%c”,c1,c2);循环短路:循环短路:continue语句语句 v一般形式为:一般形式为:continue;v作用是结束本次循环,跳过循环体中尚未执作用

14、是结束本次循环,跳过循环体中尚未执行的语句,接着进行下一次是否执行循环的行的语句,接着进行下一次是否执行循环的判定判定循环短路:循环短路:continue语句语句 v有时某一次或某几次循环执行了循环体中的有时某一次或某几次循环执行了循环体中的某些语句之后,就没有必要再执行剩余的语某些语句之后,就没有必要再执行剩余的语句,而应该重新开始下一次循环,这时就可句,而应该重新开始下一次循环,这时就可以使用以使用continue语句,其作用是使语句,其作用是使“循环短路循环短路”vcontinue语句通常用作语句通常用作if语句的动作部分,语句的动作部分,无条件的无条件的continue是没有实用价值的

15、是没有实用价值的 例例5 打印打印6763个国标汉字(不包括空位)个国标汉字(不包括空位)v打印国标汉字时,当区号为打印国标汉字时,当区号为215,位号为,位号为250254时,这时,这5个码位是空位,没有必要打印个码位是空位,没有必要打印v我们可以用我们可以用continue语句来避免打印这语句来避免打印这5个空个空位位 例例5 打印打印6763个国标汉字(不包括空位)个国标汉字(不包括空位)#include void main()int c1,c2;for(c1=176;c1=247;c1+)for(c2=161;c2=250)continue;/循环短路循环短路 printf(%c%c,

16、c1,c2);退出循环退出循环 v进入循环后,必须保证在符合一定条件的时进入循环后,必须保证在符合一定条件的时候可以退出循环。一个无法退出的循环叫做候可以退出循环。一个无法退出的循环叫做“死循环死循环”,死循环是必须避免的,死循环是必须避免的v 可以退出循环的语句有三种:可以退出循环的语句有三种:break语句语句return语句语句goto语句语句break语句语句v一般形式为:一般形式为:break;v作用是在多重循环中跳出本层循环作用是在多重循环中跳出本层循环,即从循即从循环体内跳出循环体,提前结束循环,接着执环体内跳出循环体,提前结束循环,接着执行循环下面的语句行循环下面的语句brea

17、k语句语句vbreak语句只能用于语句只能用于swith语句和循环控制语语句和循环控制语句中,即在句中,即在while语句、语句、dowhile语句、语句、for语句和语句和swith语句中才能使用语句中才能使用break语句语句v循环体中的循环体中的break语句通常也是作为语句通常也是作为if语句的语句的动作部分,因为无条件的动作部分,因为无条件的break是没有应用价是没有应用价值的值的例例6 用用break语句改写例语句改写例5#include void main()int c1,c2;for(c1=176;c1=247;c1+)for(c2=161;c2=254;c2+)if(c1=

18、215&c2=250)break;/跳出内层循环跳出内层循环 printf(%c%c,c1,c2);continue语句和语句和break语句的比较语句的比较vcontinue语句只结束本次循环,而不是终止语句只结束本次循环,而不是终止整个循环的执行整个循环的执行vbreak语句是结束整个循环过程,不再判断执语句是结束整个循环过程,不再判断执行循环的条件是否成立行循环的条件是否成立return语句语句v一般形式为:一般形式为:return;v作用是跳出循环,并且直接结束它所在的那作用是跳出循环,并且直接结束它所在的那个函数个函数vreturn语句可带返回值,也可不带返回值,语句可带返回值,也可

19、不带返回值,作用都是结束所在函数(具体讲解见第作用都是结束所在函数(具体讲解见第8章函章函数)数)例例7 检查输入是否正确检查输入是否正确#include void main()int i,N,sum=0;printf(请输入请输入N的值(的值(10 100):):);scanf(%d,&N);if(N 100)printf(输入的输入的N值错误!值错误!);return;elsefor(i=1;i=N;i+)sum=sum+i;printf(1+2+%d=%d n,N,sum);例例8 和尚分馒头和尚分馒头v来看一个趣味问题给来看一个趣味问题给100个和尚分个和尚分100个馒头,每个馒头,每

20、个成人得个成人得3个,每个少年得个,每个少年得1个,每三个小孩得个,每三个小孩得1个,个,成人、少年和小孩都不为成人、少年和小孩都不为0,100个馒头恰好分完个馒头恰好分完问成人、少年和小孩各有多少个?问成人、少年和小孩各有多少个?v设成人、少年和小孩分别为设成人、少年和小孩分别为x,y,z个,依题意有:个,依题意有:x+y+z=100(人数为(人数为100)3x+y+z/3=100(馒头数为(馒头数为100)例例8 和尚分馒头和尚分馒头v解三元方程组一般应该有三个方程,这里只有两个解三元方程组一般应该有三个方程,这里只有两个v我们用穷尽搜索的办法来求解,即赋给变量我们用穷尽搜索的办法来求解,

21、即赋给变量x,y,z以所有可能值,看哪些值的组合能满足上述两个条以所有可能值,看哪些值的组合能满足上述两个条件所谓穷尽搜索,这里就是用三重循环:件所谓穷尽搜索,这里就是用三重循环:外层循环,试遍外层循环,试遍x的所有可能值的所有可能值中层循环,试遍中层循环,试遍y的所有可能值的所有可能值内层循环,试遍内层循环,试遍z的所有可能值的所有可能值goto语句语句vgoto语句为无条件转向语句,它的一般形式语句为无条件转向语句,它的一般形式为:为:goto 语句标号;语句标号;v语句标号用标示符表示,它的命名规则与变语句标号用标示符表示,它的命名规则与变量名相同量名相同v结构化程序设计主张限制使用结构

22、化程序设计主张限制使用goto语句语句goto语句语句vgoto语句虽然会影响程序结构的清晰性,但语句虽然会影响程序结构的清晰性,但有些情况下,不用有些情况下,不用goto语句是不行的语句是不行的vbreak语句只能跳出本层循环,因此,在多重语句只能跳出本层循环,因此,在多重循环中,如果想在较深的那一层直接跳到所循环中,如果想在较深的那一层直接跳到所有循环语句之外,就必须用有循环语句之外,就必须用goto语句。语句。v例例9 用用goto语句改写例语句改写例8 退出循环语句小结退出循环语句小结v退出循环,执行循环体之后的第一个语句,退出循环,执行循环体之后的第一个语句,这时宜用这时宜用brea

23、k语句语句v不光退出循环,而且要退出所在函数,这时不光退出循环,而且要退出所在函数,这时宜用宜用return语句语句v在多重循环中,如果想在较深的那一层直接在多重循环中,如果想在较深的那一层直接跳到所有循环语句之外,用跳到所有循环语句之外,用goto语句就可以语句就可以退出多重循环,但是并不退出所在函数退出多重循环,但是并不退出所在函数思考与练习思考与练习v完成例完成例8、例、例9,并修改例,并修改例9,使得程序可以得,使得程序可以得出所有的解出所有的解v用用for语句改写例语句改写例1,分别写出省略表达式,分别写出省略表达式E1、E3和和E2、E3两种情况的两种情况的for循环循环v分别用分别用while语句、语句、dowhile语句和语句和for语句语句编写下列程序,并在编写下列程序,并在C上实现:上实现:从键盘输入从键盘输入N的值,求阶乘的值,求阶乘N!求级数求级数1-1/2+1/3-1/4+1/99-1/10041、学问是异常珍贵的东西,从任何源泉吸收都不可耻。阿卜日法拉兹42、只有在人群中间,才能认识自己。德国43、重复别人所说的话,只需要教育;而要挑战别人所说的话,则需要头脑。玛丽佩蒂博恩普尔44、卓越的人一大优点是:在不利与艰难的遭遇里百折不饶。贝多芬45、自己的饭量自己知道。苏联

展开阅读全文
温馨提示:
1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
2: 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
3.本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!