- 1、本文档共50页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
for循环的算法描述如图3-15所示。(a)for语句的流程图假真表达式2求解表达式1循环体求解表达式3循环体当表达式2为真时求解表达式1求解表达式3(b)for语句的N-S图图3-15for循环的算法描述第30页,共50页,星期日,2025年,2月5日【案例3.8】如果能将一张厚度为0.05mm的报纸对折,再对折,再对折……对折50次后,报纸的厚度是多少?【程序详解】/*ex3-8.c报纸的对折问题*/#includestdio.hvoidmain(){doublea=0.0005;//a表示纸的厚度,初始为0.0005米inti;for(i=1;i=50;i++)//对折50次{a=a*2;//每对折一次厚度是原来的2倍}printf(这张纸对折50次后厚度为%.2f米\n,a);//保留两位小数输出}第31页,共50页,星期日,2025年,2月5日【案例3.9】求具有性质的四位数。程序的算法描述如图3-17所示。开始YesNoYesn=1000输出n分解后两位cd分解前两位abn10000No(ab+cd)*(ab+cd)=nn++结束n=1000分解前两位ab分解后两位cd当n10000时(ab+cd)*(ab+cd)==nYesNon++输出n(a)案例3.9的流程图(b)案例3.9的N-S图第32页,共50页,星期日,2025年,2月5日【归纳总结】for循环中的“表达式1”、“表达式2”和“表达式3”都是可选项,即可以缺省,但“;”不能缺省。(1)“表达式1”一般用于为进入for循环的有关变量赋初值,可以是赋值表达式、逗号表达式等。(2)“表达式2”是循环执行条件,每次执行循环体语句前,都要判断条件是否成立,只要其值非0就执行循环体。(3)在循环体语句执行后,立即执行“表达式3”,“表达式3”一般用于改变有关变量的值,特别是常用于改变与循环条件有关的变量值。for循环语句可以转换成while循环语句,以下for语句和while语句等价for(i=1;i=100;i++)sum=sum+i;i=1;while(i=100){sum=sum+i;i++;}经验交流第33页,共50页,星期日,2025年,2月5日3.2.4break语句和continue语句1.break语句break语句只能用在switch语句和循环语句中,其作用是跳出switch语句或跳出本层循环,转去执行后面的语句。【案例3.10】把316表示为两数之和,其中一个是13的倍数,另一个是11的倍数【程序详解】/*ex3-10.c316分解问题算法*/#includestdio.hvoidmain(){intm;for(m=1;;++m)if((316-13*m)%11==0)break;//跳出本层循环printf(316=%d+%d\n,13*m,316-13*m);}第34页,共50页,星期日,2025年,2月5日【归纳总结】使用break语句在一些场合下使编程更加灵活、方便。如上述程序,由于循环的次数事先无法确定,如果没有break语句,将会构成一个死循环。因为使用了break语句,使得程序在满足条件(316-13*m)%11==0时,直接结束循环。第35页,共50页,星期日,2025年,2月5日2.continue语句continue语句可以结束本层本次循环,即不再执行循环体中continue语句之后的语句,转入下一次循环条件的判断。与break语句不同的是,continue语句只结束本层本次的循环,并不跳出循环。【归纳总结】break与continue在语句形式和执行流程上的区别如图3-22所示。第36页,共50页,星期日,2025年,2月5日3.2.5循环的嵌套循环的嵌套也称多重循环,即在一个循环语句的循环体中,可以嵌套另一个循环语句。内嵌的循环语句称内层循环,包含循环的循环称为外循环,内层循环还可以再包含循环。嵌套循环的执行顺序是:外循环执行一次,内
文档评论(0)