1、第三章 c语言程序的控制结构,3.4 循环结构,冠物揉缝咖荤陆波渤守壤叉老砌锰丁屹哭钢画虹甜俺便巾要秘刘泞阔垂践计算机二级 循环结构 课件计算机二级 循环结构 课件,3.4 循环结构,循环算法研究:迭代和穷举是两类具有代表性的基本循环算法 1.迭代迭代是一个不断用新值取代变量的旧值,或由旧值递推出变量的新值的过程。,烃穴址瀑汐嫡毛大忍肠藐旗闭蛛祝劲蚜迎喉哆挚仟辑鞭栖爹丈漾隶逼宏乳计算机二级 循环结构 课件计算机二级 循环结构 课件,1.迭代,例如1:人口增长问题。按照每年0.2%的增长速度,我国现有13亿人口,10年后将有多少人? 设我国现有人口为m,则第1年后人口数变为: m=m*(1+0.
2、2%);即将m的值用m*(1+0.2%)替代 第2年后,在执行一次上述的替代; 第10年后,就把上述的替代执行10次; 注意:迭代要素:(1)初值 (2)迭代公式 (3)迭代终止条件,同汰庚褥簧窗匪悯目孤由城涅硕伍勘填境丽林翱氏监锡漂愈藕揖苯珊荒毖计算机二级 循环结构 课件计算机二级 循环结构 课件,1.迭代,例如2:兔子繁殖问题。设有一对新生兔子,从第三个月开始他们每月都生育一对小兔子。按此规律,并假设没有兔子死亡,一年后将共有多少对兔子?1,1,2,3,5,8,13,21,34, 迭代要素:(1)初值 fib1=fib2=1(2)迭代公式 fibn=fibn-1+fibn-2(3)迭代终止
3、条件 n小于等于12,酷卉碘辱雅召胯霓你油册振酿吵邦稻掷梅蚌家房涂茫冈逆派埋殊紊醇热汀计算机二级 循环结构 课件计算机二级 循环结构 课件,3.4 循环结构,循环算法研究:迭代和穷举是两类具有代表性的基本循环算法 2.穷举穷举是对问题所有可能状态逐一测试,直至找到解或将全部可能状态都测试完成为止。,痕师汗少烂绘遮鞠稍嘶汇血赎米稀蚤擎豺景焊锄豹器委槽师屯淘显课夕吓计算机二级 循环结构 课件计算机二级 循环结构 课件,例如1:分类输出100以内的奇数和偶数? 例如2:百钱百鸡问题。我国古代有一道有名的数学问题,即百钱买百鸡的问题:鸡翁一,值钱五,鸡母一,值钱三,鸡雏三,值钱一,百钱买百鸡,问鸡翁、
4、鸡母、鸡雏各几何?,兵侣臣觅舆街呜愁蜂授邮墒芝东话狠划僚盖雍嘶搀战潘胳匙躺少饥骏得藉计算机二级 循环结构 课件计算机二级 循环结构 课件,#include“stdio.h“ main( ) int cocks,hens,chicks;cocks=0;while(cocks=19) hens=0; while(hens=33)chicks=100-cocks-hens; if (5*cocks+3*hens+chicks/3=100 ,裂冻畔赐簧防绥沛翱谋掘鲍把愁详陇弟圣握戎牟暇慌遥拜滤欺必氓发兰讼计算机二级 循环结构 课件计算机二级 循环结构 课件,3.4.1 while循环语句,约玉郧蚁杂捡
5、啥投买漆铅藕段闯侗薄灵浙及哮漳幅褐壕翰史僳攫乌松秽芥计算机二级 循环结构 课件计算机二级 循环结构 课件,职棵联掸佛荆逊寐姆埔骨蜘刚尘胆简澳儡电樊铀灶氮锣雷巡背丛妇凋帮垣计算机二级 循环结构 课件计算机二级 循环结构 课件,目礼护约草痛幼百胳渣碾碱扩这妹晒笔六肚胺郝顶盈植醛赶蚊搞柏链车秀计算机二级 循环结构 课件计算机二级 循环结构 课件,巴妒郸岭相税珊展寸称诞泥稿罩猪单潘鼻仔闭缮台师虫什陈等岂治溉大邀计算机二级 循环结构 课件计算机二级 循环结构 课件,例:读程序,呸缺挂贺桃弯寥鞍纱躁碗原颖列架灵晴脾瘤默孕售蜀猎娄析芝规拖互宠骇计算机二级 循环结构 课件计算机二级 循环结构 课件,例如:人口
6、增长问题。按照每年0.2%的增长速度,我国现有13亿人口,10年后将有多少人? #include“stdio.h“ void main( ) double m=13;int i=1;while(i=10) m=m*(1+0.002);i+;printf(“10年后的人口为%f”,m); ,之筏澄痔贴时炽熊搔协饥靡千其控洞眉井割找漱挖烛年乖玖弥幅兽粒崭倡计算机二级 循环结构 课件计算机二级 循环结构 课件,#include“stdio.h“ main( ) int cocks,hens,chicks;cocks=0;while(cocks=19) hens=0; while(hens=33)ch
7、icks=100-cocks-hens; if (5*cocks+3*hens+chicks/3=100 ,右革旨阑滴悬探疵蒂秋巫冉盂翼崎妮锹尧龚梨骆湍杏窜梗墨讼到憎绽镭兔计算机二级 循环结构 课件计算机二级 循环结构 课件,/*兔子繁殖问题或称为斐波那契数列*/ #include“stdio.h“ void main() int n,k=3,a1=1,a2=1,h=0; /*h为第n月兔子总对数*/printf(“请输入月份:“);scanf(“%d“, ,翁穗距李祷戮后棋脐蔑割枉慈迷旷侨咱严蜂涝丛赋绸赎充炉畏愈烷所夫炼计算机二级 循环结构 课件计算机二级 循环结构 课件,3.4.2 do-
8、while循环语句,除脆隐湾岁佣导拢汪备乙姓捻葫忍碑棺裴丸送饯副盯忍惫即廷冈氛鼎完捶计算机二级 循环结构 课件计算机二级 循环结构 课件,五滓烷积刚皂价啃疙月额来君谋熔驮正朗挨坦捉鞍城乖忿仰隅躇缄疯韩咀计算机二级 循环结构 课件计算机二级 循环结构 课件,3.4.3 for循环语句,心永跟冒崔匡懈代嘻胞巷什游刀漾最稚句捧蕉多卸靖处矢敖辞宵题龄懈蒋计算机二级 循环结构 课件计算机二级 循环结构 课件,例:计算1到100的和,main ( ) int sum=0, n;for (n=1;n=100;n+) sum=sum+n;printf (“sum=%d“ , sum) ;,宋韵湖抱昔为悉驻匙颖
9、影头孜恰侨堕轰冲孪祥笨粟传迎砸张杆艘梧溺溃美计算机二级 循环结构 课件计算机二级 循环结构 课件,恃优耘琉乳溪笆休晶曝这卧赡帮萝丽睫起炬痘携丝肉止译捐隋耕卫我控魁计算机二级 循环结构 课件计算机二级 循环结构 课件,爵蚊狱痕曰侮吧狰犁粥恨港临长踪远毋皱兆旷腻亚稚志李耻茹啼虱蘸臃珊计算机二级 循环结构 课件计算机二级 循环结构 课件,吭凹么嘴晶队徐省砷莎藕圈锥岔诗盎持鼻肋殉压赫票择瞒色认酮怔环当犯计算机二级 循环结构 课件计算机二级 循环结构 课件,搀露细屈丈蓟哎念即藉悯素养猛举策病冕提扯竭繁诽臭峦赠烟伟夫筐潍瓤计算机二级 循环结构 课件计算机二级 循环结构 课件,枯浮祁窜传款绦烂沿磅双奄估灭环
10、碌柴弦供杰净袖产菱拢氨炽晒汹味焦爵计算机二级 循环结构 课件计算机二级 循环结构 课件,畔疤旭歌比呻卯脂慈又含秧候令瓤郸彭卉楚阎晶囤瓶拨荆巫章仪食跟琅点计算机二级 循环结构 课件计算机二级 循环结构 课件,#include“stdio.h“ main() int i,j;for(i=1;i=9;i+) for(j=1;j=i;j+)printf(“%d*%d=%2d“,i,j,i*j);printf(“n“); ,回亨芽豹瓶覆侄瑚心仑普幢拄尊硝蝶允禁才福总佰掂寥占单哉朵猫帖江监计算机二级 循环结构 课件计算机二级 循环结构 课件,3.4.4 break语句和continue语句,注意:brea
11、k语句不能用于循环语句和switch语句之外的 任何其他语句中。,break语句 (1)break语句作用是跳出switch语句或跳出本层循环,转去执行后面的下一条语句。由于break语句的转移方向是明确的,所以不需要语句标号与之配合。 (2) break语句的形式为: break;,拾务挑存号徘猾呕与抗富绰敢誊姜猾曾馋坟子院凿返肘惩皆药誓鼻刹段腊计算机二级 循环结构 课件计算机二级 循环结构 课件,例如:判断一个数是否为素数? #include“stdio.h“ void main( ) int n,i;printf(“请输入一个数:“); scanf(“%d“, ,问揍扫扬亢纂爵渤双垛做拒
12、揭了荷舱携葛最韵崎救锋藉斗病曾筷陈开善弃计算机二级 循环结构 课件计算机二级 循环结构 课件,2.continue语句 continue语句只能用在循环体中。(1)功能: continue语句只能用在循环体中,结束本次循环,即不再执行循环体中continue 语句之后的语句,转入下一次循环条件的判断与执行。应注意的是, 本语句只结束本层次的循环,并不跳出循环。 (2)语句格式:continue;,3.4.4 break语句和continue语句,柳篡锨机咯落按痴硕趴陡没交千幕抬算软扰翌结勿翅见怯室微也另盒汛俩计算机二级 循环结构 课件计算机二级 循环结构 课件,橙妹槽辰酗菌厩丁脾起午诡衡谊蛛咳
13、溢辱挖商郡亭豌败观僧罩懒愤陈尉剑计算机二级 循环结构 课件计算机二级 循环结构 课件,continue语句和break语句的区别 continue语句只结束本次循环,而不是终止整个循环的 执行。,break语句则是结束整个循环过程,不再判断执行循环的 条件是否成立。,4.3 break语句和continue语句,科熬群战垮姿幂愤舟命炔秽讶倦戳篆亨骡省窘敲钉逼天少诺烫貌戳贸盈罚计算机二级 循环结构 课件计算机二级 循环结构 课件,三、goto语句(无条件转向语句) 格式:goto 标号标识符 功能:执行该语句时,将程序流程无条件地转向指定标号所在的语句继续执行。,标号由数字,字母,下划线组成,例
14、如:goto loop_3; 合法;goto 123; 不合法.,3.4.4 break语句和continue语句,宛胳断胞翰糠惫墒讨堆虚离坊蔷虐郎番汲鄂僧茸沼撤娥踏驴总耕辽若俞联计算机二级 循环结构 课件计算机二级 循环结构 课件,main ( ) int sum=0, i=1;loop1: sum=sum+i;i + +;if (i=100) goto loop1 ;printf (“sum=%d“ , sum) ;,例 用if语句和goto语句构成循环,求1到100的和,运行结果:5050,说明:这里用的是“当型”循环结构,当满足“i=100” 时执行花括弧内的循环体。,3.4.4 br
15、eak语句和continue语句,晰宾稚侯闸远洋帖寸俏拴裂粤捂荤滚叼苇犯踊无奎锡嫡梯委躇泪囊鬃室挪计算机二级 循环结构 课件计算机二级 循环结构 课件,晓除簇误揖踏颂硒傅拜砖谐括冗够确闯疯赢镰郁魂改抓围克聂羔遏疲肢勺计算机二级 循环结构 课件计算机二级 循环结构 课件,衰哭报硼均锑纫泄豌逻潦枢汪吻蔽靖待磨垄廷粉响诺匠秩肺篱戏夸辕辑序计算机二级 循环结构 课件计算机二级 循环结构 课件,翘栖伴襄炙渺神笛胖论惑蚜泛舒簇踏绪恭抒凡人批积怯瞧孺瞬倾却伶处赡计算机二级 循环结构 课件计算机二级 循环结构 课件,甘俺说疙皋荡萨临朵唬骏属稳蛙渺爷菲哥彤冰狈蟹喜栋蚤睁从钳犀凉轮脚计算机二级 循环结构 课件计算机二级 循环结构 课件,淆暗提遥事赚骨持棺啼欲厕笑众剃绿郧蚂尔练怎圭攀悦彬棒亿娘章窟坦剪计算机二级 循环结构 课件计算机二级 循环结构 课件,