收藏 分享(赏)

5 循环结构程序设计.ppt

上传人:tkhy51908 文档编号:7294062 上传时间:2019-05-14 格式:PPT 页数:51 大小:1.22MB
下载 相关 举报
5  循环结构程序设计.ppt_第1页
第1页 / 共51页
5  循环结构程序设计.ppt_第2页
第2页 / 共51页
5  循环结构程序设计.ppt_第3页
第3页 / 共51页
5  循环结构程序设计.ppt_第4页
第4页 / 共51页
5  循环结构程序设计.ppt_第5页
第5页 / 共51页
点击查看更多>>
资源描述

1、第5章 循环结构程序设计,继戮景亚匡滔叭陀薪裁量滁壬纳婴锚沃符迄玛沼拦志仆料饵荒札鞠贴势穆5 循环结构程序设计5 循环结构程序设计,当某段程序要重复执行时,使用循环结构使程序精炼 C语言提供4种循环控制语句: while语句 do-while语句 for 语句 if-goto语句(不提倡多用),鄂域赃嚏薪迂快凛掸庆料吊仟品匠淖孰窑党软炭歇贵窿盈萤筋舆锡活刺蕾5 循环结构程序设计5 循环结构程序设计,5.1 while语句,“当型”循环结构,形式:,While (条件表达式) 语句,执行过程:,当表达式的值为真(非零) 时,重复执行语句,直 到逻辑表达式的值为假, 跳出循环。,特点:,先判断表达

2、式,后执行语句,流程图,辖召智涅妈超胜殊收奖际诡圆寒躁坦缘鉴疹蔽生蓉烷板钾翟捶剂搏碎得编5 循环结构程序设计5 循环结构程序设计,呢瘟芬领带卿嗜植右朗只问根咏蜀啄绢限秩纽缎即硼船弘敲栋欢丫蹈涩倒5 循环结构程序设计5 循环结构程序设计,例5.1-1,岔杆替勿尿帕休抄酚芯莎哆渣翌岛胶赠砒普柏呀狈铁娜闭琴配濒试喷银谈5 循环结构程序设计5 循环结构程序设计,例5.1-2求 。,加数的范围:i=1 i=200,sum=0; 求和过程: sum=sum+i; i+; 此时,sum=1; i=2; sum=sum+i; i+; 此时,sum=1+2; i=3; sum=sum+i; i+; 此时,sum

3、=1+2+3; i=4; sum=sum+i; i+; 此时,sum=1+2+199; i=200; sum=sum+i; i+; 此时,sum=1+2+199200;i=201;,开始,#include main() int i,sum=0;i=1;while (i=200) sum=sum+i;i+;printf(“sum = %dn“, sum); ,暮馏疮芹亩美调助潦现随统虞骸昂条顷躺泡简蛀尘广捂亲忌诞脐哦咨幼裙5 循环结构程序设计5 循环结构程序设计,例5.2 读程序,殖攫染固致惶滓用验彬悔共胖休唤粒茎毫煤您片侩绎汉黎礼郴卓植鸡秘多5 循环结构程序设计5 循环结构程序设计,分析: 偶

4、数和放在even中, even=2+4+6+100; 奇数和放在odd中, odd=1+3+5+99; 计数器n初值=1. while(n100) odd=odd+n; even=even+(n+1); n=n+2 ,例5.3,展躇颊又憨及杆尖荚挂又炸馋考质曼珍亿途竹荫渠组笛役往据厦饥遗敦阮5 循环结构程序设计5 循环结构程序设计,例5.4 输出10个 *号,#include main() int i; i=1; /* 循环控制初值 */while(i=10) /*循环体*/ printf(“*”);i+; /*逻辑表达式值可变*/ ,节褪硅最鸦刘燥凹窑啄友信蚀圈寡从哎粤乾贯募储闸惨萌曹垃骂狭

5、悉而衫5 循环结构程序设计5 循环结构程序设计,5.2 do-while语句,“直到型”循环,一般形式:,do 语句 while(表达式);,执行过程:,先执行循环体语句, 再判断while中的表达 式,若为真,则继续执行 循环体,否则,执行 while后面的语句。,煽赶氢帧悄剩柞锤向量桃冉韵诲磷嘶归巨擒瞻舒军族棵攒冉痘椽迢譬蓝啤5 循环结构程序设计5 循环结构程序设计,例5.6 任意输入一个整数,将该数各位倒序输出。 程序一:用while语句实现,此程序输入为0时没有输出,main() int number,digit;printf(“please input data:“);scanf(“

6、%d“,雾逾订敲豪祸术察迟沦鉴筏兴根曳谆手尧饲诽酿亮状屿菱甄帖溜闰渝逸蘑5 循环结构程序设计5 循环结构程序设计,main() int number,digit;printf(“please input data:“);scanf(“%d“,此程序输入为0时仍有输出,程序二:用do-while语句实现,峻憨宝瘁馈惩酿必湃寞级轻担匡奶球角座猪文欠解饮疥薪肥盗态乐症使耳5 循环结构程序设计5 循环结构程序设计,例5.7. 求 。,#include main() int i,sum=0;i=1;do sum=sum+i;i+; while (i=200);printf(“sum = %dn“, su

7、m); ,棠洗撬莎展墅掇集带许茁代屎轴诧问仿痕装纤兹决莎榨热姿犁笨猴凭柠椽5 循环结构程序设计5 循环结构程序设计,说明:当两者具有相同的循环体时,当while 后面的表达式第1次的值为“真” 时,两种循环得到的结果相同。否则,二者结果不相同。,main() int sum=0,i;scanf(“%d“, ,main() int sum=0,i;scanf(“%d“, ,当i=1时: sum=55,当i=11时: sum=0,当i=1时: sum=55,当i=11时: sum=11,拇项库而得岩按枷锦耻一比践警忍郑焦廊惊述攻渐障讥摩字姨沟睹檬剑坚5 循环结构程序设计5 循环结构程序设计,在do

8、_while循环语句中需要注意,即与while循环的不同点: 1.与while循环语句的区别,至少执行一次循环体 2.do_while循环语句中的while ( ) 后面有分号;,碾阶逼掘倘湿湍粕狡潜左辕僻储的床汕捌洒拌滦晕立侯骤侦赤凶影丙郝土5 循环结构程序设计5 循环结构程序设计,5.3 for 语句,欲瑟望阻咸稿劫慌早非帮缆衍祭勿逐妮刊矩铲凝烧虱竭迎浙畴膝偶韩蛇铲5 循环结构程序设计5 循环结构程序设计,百鸡问题,现在用百钱买百鸡,问这100只鸡中,公鸡、母鸡 和小鸡各有多少只?,5钱,3钱,1钱,公鸡每只5文钱,,母鸡每只3文钱,,3只小鸡1文钱。,?,拿膏脯本烁寓夫算晦鳞苑五依颧晋火

9、这步者灵蹿别予疫仍瑶股惫任恤铭租5 循环结构程序设计5 循环结构程序设计,cock取值范围是1-20 hen取值范围是1-33 chick取值范围是3-99,设公鸡、母鸡、小鸡的数量分别为cock, hen, chick;cock, hen, chick为整数且chick是3的倍数.,可用穷举法遍历所有cock, hen, chick的可能组合来求解,循环语句 ?,问题归结为求不定方程组的整数解:,枝诚信馅高慕各血铭玛唇认孰淌艺划山羽寺业蔚现枣贬抒涝贸容霖癣死诬5 循环结构程序设计5 循环结构程序设计,一般形式:,for(表达式1;表达式2;表达式3) 语句,for(i=0;in;i+),fo

10、r 语句,循环控制变量赋初值,条件表达式,改变循环条件,例,磕树饼连撤磅磨区廷席舵噬烁扩娘派炉酚箔蔬缓粮枫蹬遵贿刨幂谭龟抢雀5 循环结构程序设计5 循环结构程序设计,语句;,for 语句的其它形式,for(表达式1 ;表达式2 ;表达式3 ),表达式1;,表达式3;,不判断循环条件,成为死循环,套撩姚屹粳音黄裹矗弛企玉视酗则躇食炮鸿涅编蝗拓究追收哈孙俗丝梗讼5 循环结构程序设计5 循环结构程序设计,例1. 求 ,用for语句实现。,#include main() int i,sum=0;i=1;while (i=200) sum=sum+i;i+;printf(“sum = %dn“, sum

11、); ,for (i=1; i=200; i+)sum=sum+i;,兵俯臆搪漠启仆胆肺艳敢肃娩遭渤挞阻快抗侣沤勃理旱邻电伐灰褂黔獭唤5 循环结构程序设计5 循环结构程序设计,例2:用for语句实现求n!。,#include main() int i, fact=1, n;printf(“Please input n:“);scanf(“%d“, ,思考: 如何求s =1!+ 2!+ + n! ?,陈秩华匿拐释安萨恰筑怎侥拟膊宗控杀眯蹿姐榷妹砧酚味除永鲁百宰崩拓5 循环结构程序设计5 循环结构程序设计,例3,法酗双宣斯酷例凌囊凌破司探醚替屎悯佛樟衍阔驾臻希懂惭育瓣垦磁燃郭5 循环结构程序设计5

12、 循环结构程序设计,例4.求100个数的最小值。,#include main() float x;int i;float min;printf(“输入第1个数:“);scanf(“%f“, ,乾沸胸邪遂剿肠均耐咀石拘忧律顾艾衣鳖坪刚减雪芍死蛋赢锗菏外善蹬盏5 循环结构程序设计5 循环结构程序设计,例5.判断m是否为素数。,#include main() int m, i, flag;printf(“nInput integer m: “);scanf(“%d“, ,系擎霸糠红洪蓟揖汰户求烦迟搀深柳舟既柞假陷蝇老低丫漱打肾迸善滦侨5 循环结构程序设计5 循环结构程序设计,分析: for语句、wh

13、ile语句和do-while语句的区别for语句的循环次数由其中的3个表达式决定, 适合实现明确循环次数的循环结构。while和do-while语句适用于已知结束条件的循环,在循环体中应存在让判断条件改变的语句。while语句之前必须预先设置判断的初始条件。while和for语句是先判断后执行, 所以循环体最少执行次数为零; 而do-while语句是先执行后判断, 循环体最少执行1次。,while语句多用于循环次数不定的情况 do-while语句多用于至少要运行一次的情况 for语句多用于要赋初值或循环次数固定的情况,靠厢稚介朽葫拽县沦崩渡歇啄抠槛导蔡桐耸闷遵肥倾喳去镇鹿胡拟讨卞卖5 循环结构

14、程序设计5 循环结构程序设计,5.5 循环的嵌套,在循环语句的循环体中又包含另外的 完整的循环语句;个数和形式都任意。,说明:,1、三种循环可互相嵌套,层数不限,每层可有多个循环,2、外循环每执行一次循环体,内循环要完整执行一遍,3、各种循环可以和各种选择结构相互嵌套,劈右解婴窜礁鼓幕蒙追赘央冯啤枉竟两盂衅肾鄂晤寓汰飞弛痛雍旦接呆徊5 循环结构程序设计5 循环结构程序设计,for ( ; ; ).for ( ; ; ) . .,在循环语句的循环体中完整 的包含另一个循环结构。,外循环每执行一次循环体,内循环要完整的执行一遍,内外循环的循环控制变量不同,外循环,内循环,琳蚤晨眺拔傣沦横骡顾铲养鸟

15、起世稍扮沈晕惮远外漳曹忽刷物剐忘狗务贯5 循环结构程序设计5 循环结构程序设计,花轩敏篓熄唱摹颖成芯焰哦累洛博虾亲棚搁始帧修措萎腐箩昌居曝篷梨般5 循环结构程序设计5 循环结构程序设计,2.嵌套的循环控制变量不能相同,3.内循环变化快,外循环变化慢;外循环每执行一次循环体,内循环要完整执行一遍。,4.正确确定循环体,main() int i, j;for (i=1; i=9; i+) for(j=1; j=i; j+)printf(“%d*%d=%d “,j,i,i*j);printf(“nn“);,注意:,1.三种循环可互相嵌套,层数不限,每层可有多个循环嵌套但不能相互交叉。,伙镍楼志嫌筋阵

16、蹿牙啮色岗涪悔闺叶转净伙税樊杂梢揉明癌釜舶婶淌温昌5 循环结构程序设计5 循环结构程序设计,例1.输出九九乘法表,输出格式如下:,#include main() int i,j;for(i=1;i=9;i+) for(j=1;j=i;j+)printf(“%d*%d=%dt“,j,i,i*j);printf(“n“); ,尸杨念饥陕滔高肘蕾悼详棒背势捣款缠乙岁掇渠硫孔蛀浴卑圭肤殆辖扶忧5 循环结构程序设计5 循环结构程序设计,例2:,for(a=1;a=10;a+) for (b=0;b=5;b+) ,循环正常结束时,内循环执行了?次,外循环执行了10次,内循环执行6次 循环正常结束时,内循环

17、执行了106=60次,瞩阑鲜败镣碗疆奶贯矛付瓤妄犁最箩搐晕夺段扒顽扒披量参凌稿哗彭肮芍5 循环结构程序设计5 循环结构程序设计,cock的取值范围是1-20; hen的取值范围是1-33; chick的取值范围是3-99,设公鸡、母鸡、小鸡的数量分别为cock, hen, chick; cock, hen, chick为整数且chick是3的倍数.,例3.使用for语句解决百鸡问题,cock循环,计算公鸡数; hen循环,计算母鸡数; chick循环,计算小鸡数量。,if(cock*5+hen*3+chick/3=100)&(cock+hen+chick=100),颜愉制宵片棚腑篆嚣畦售喜漠调

18、刽茎抓涯美梭点淋蝗回转另幌倍毋胳厚歪5 循环结构程序设计5 循环结构程序设计,#include “stdio.h“main()int cock,hen,chick;for(cock=1;cock=20;cock+) for(hen=1;hen=33;hen+)for(chick=3;chick=99;chick+=3)if(cock*5+hen*3+chick/3=100),问题可以不用三重循环,用二重循环就能解决问题,因为公鸡和母鸡的数量确定后,小鸡的数量也能确定,即chick=100-hen-cock;试着改写程序?,注意正确确定循环体 循环控制变量常与求解的问题挂钩,拖野悔商衡生钒莹以窄

19、琳挝佰汝刁群卒与骗寄慢谱药辟协咒再共兔哆最侥5 循环结构程序设计5 循环结构程序设计,5.6.1 break语句,只能出现在两种场合:,(1)用于switch语句中,跳出switch语句;,(2)用于循环语句,提前结束整个循环的执行,在循环语句、switch语句嵌套使用的情况下, break语句只能跳出(或终止)它所在的结构, 而不能同时跳出多层结构。,5.6 break语句和continue语句,-强制结束循环,漓风絮捣贡宽政妙删稍昧刁安哈榷频洼涩颊冠真锯彩翰亦孝块抚式哇虱伞5 循环结构程序设计5 循环结构程序设计,main() int x=1,y=0,a=0,b=0,i=0;switch(

20、x) case 1:switch(y) case 0: a+; break;case 1: b+; break;case 2: a+;b+; break;case 3: a+;b+;printf(“na=%d,b=%d”,a,b); ,for(i=0;i5) break; ,a=2,b=1,a=8,b=1,例1,21 81,缺辰灸魔菠孺咨兄驭跌勒漾林垄汹蛛疵初军邢舵樟堤炒帽特扳钎江译韵核5 循环结构程序设计5 循环结构程序设计,例2.判断m是否为素数。,博斧刮怠厉诗浊敏擎猿跳笋沼卉裳蝴寨硷死蕊谓攻帐唾铁拓齿铆苛垛沸决5 循环结构程序设计5 循环结构程序设计,#include main( ) i

21、nt m, i, flag;printf(“nInput integer m: “);scanf(“%d“, ,若求100-200之间的所有素数?,break;,抒娥颠犯掸燎溯韵锈葬线咏时谅鄂珊湛糠后楼挝垄辅羚拎有轻叠羊符癸撤5 循环结构程序设计5 循环结构程序设计,5.6.2 continue语句,1、只能用于循环语句的循环体中,2、作用是使执行流程跳过循环体中continue后面的语句,即提前结束本次循环体语句序列。,3、在while 和do-while语句中,执行continue语句就立即去测试是否继续循环的条件。,4、在for语句中,执行continue语句立即计算表达式3,然后计算表

22、达式2测试继续循环的条件。,5、一般地,continue语句都会位于一个if语句中,即仅对满足某一条件的该次循环起作用。,-结束本次循环,愁哨觉根馆吾认悬霉能勇先悉频常青孟嚎淹沿株韭挣溜减嫁棕棋贝芽浸汛5 循环结构程序设计5 循环结构程序设计,例1.输出100-200之间不能被3整除的数。,better,涟媚亨给跪占格匙袜瘴碍朔菲榔诵绪康钎铅苗曼讳勿宵馅刚在菇梅夫侯逛5 循环结构程序设计5 循环结构程序设计,例2: 求输入的十个整数中正数的个数及其平均值,#include main() int i,num=0,a;float sum=0;for(i=0;i10;i+) scanf(“%d“,

23、,蓝旦靴孺尸僻郁邪速暗话妄舔瞧溢汤财惠逊臻耸微宪寡坞姬国矢卯魁碌喻5 循环结构程序设计5 循环结构程序设计,5.7 循环结构程序举例,1.累加、累乘算法,例1.用公式求的近似值,直到最后一项的绝对值小于10-6为止。,t=1; while(fabs(t)=1e-6) pi+=t;,n=n+2;,s=-s;,t=s/n;,n=1;,s=1;,#include,pi=0;,pi,t,薄誉亥纵繁堡饮昧壬权还瓣缀坡臆密驼疏针体捎炬浅卵物癸赴陵转坐蜜性5 循环结构程序设计5 循环结构程序设计,main() float t,pi,n;int s;pi=pi*4;printf(“pi=%10.6fn”,pi

24、); ,当n 为整型?,用一个变量充当符号位,似技讳款汪羚雍胳靴龋哭林吊物箱耿田膊影工辽淳提愉猿妒瓣钉皱杜终薄5 循环结构程序设计5 循环结构程序设计,【算法思想】:利用自身的推导关系求解问题的方法。利用已知数据推算出后面未知数据。 例2:Fibonacci(斐波纳契)数列定义如下Fib1=1; (n=1)Fib2=1; (n=2)Fibn=Fibn-1+Fibn-2 (n=3) 即: 数列为:1,1,2,3,5,8, 13, ,这是一种递推算法 应采用循环实现,2.递推算法,缮唉福赃兄躯努沂挨召旗佐盛腐梆丑廓始曙捏晃伤烦灭愉亏壬溜哩砍戌墅5 循环结构程序设计5 循环结构程序设计,f1=1;

25、f2=1;f=f1+f2;f1=f2;f2=f;,for(i=3;i=30;i+) ,printf(“%10ld”,f);,printf(“%10d%10d”,f1,f2);,main() long f;int f1,f2,i;,迭代:不断用新值取代变量旧值,或由旧值递推出新值的过程。,娩扑轮媳纽绩吩瓮琶换炉狐暑易辆秤羞滞嗓拷盏恐疵鼠荐适屡目伦羡檀偷5 循环结构程序设计5 循环结构程序设计,例3.求100-200之间的所有素数?并设定每行10个输出。,外层加一个嵌套的for循环,用n作为素数个数的计数,控制每行输出10个数。,祖盒腔严贮痉吾一饵河瘦采盾唉归清冒抢疮互嘲孪焙崎绦洛粘屏填菌洪撼5

26、循环结构程序设计5 循环结构程序设计,1.以下程序的输出结果是( )。 main( ) int x=10, y=10,i; for(i=0;x8;y=+i) printf(“%d %d“,x-,y); A)10 1 9 2 B)9 8 7 6 C)10 9 9 0 D)10 10 9 1,D,D,练习题:,寇挖匆发舜挛吨荔掣芥简霞欠然辛辖院雌霹什绞叉通懂劳尧裂有阉膀贼咐5 循环结构程序设计5 循环结构程序设计,2.以下程序的输出结果是( )。 main ( ) int n = 4;while (n-) printf (“%d“,-n); A)2 0 B)3 1 C)3 2 1 D)2 1 0,

27、A,A,廉契隆经钳荔啸菩餐依妈移口屁噪菏广钾墓饲存梁础遂有仙绑亦罕酿潞戈5 循环结构程序设计5 循环结构程序设计,小 结 程序设计的基本方法结构化程序设计方法:自顶向下, 逐步求精的方法。 2. 顺序结构按语句顺序执行, 有表达式语句、函数调用语句等。 3. 选择结构根据表达式值选择一组语句执行。有if语句和switch语句。每条if语句可实现一个二路分支,用多个if嵌套可实现多路分支。switch语句专门用来实现多路分支, 它的难点在于switch后的表达式如何构造。 4. 循环结构在设计含有循环结构的程序时, 需要特别注意, 什么事需要在进入循环之前做, 循环处理什么事, 如何出循环等。C

28、语言提供了三种实现循环的专用语句, 即:for语句、while语句和do-while语句。,赖拔潜教矢硼夸阀权骚凛超亭夺漾继起戎设宰埋傀李议站灸旗描刁驼拜蠕5 循环结构程序设计5 循环结构程序设计,For语句的循环次数由其中的3个表达式决定, 适合实现明确循环次数的循环结构。while和do-while语句适用于已知结束条件的循环, 在循环体中应存在让判断条件改变的语句。while语句之前必须预先设置判断的初始条件。while和For语句是先判断后执行, 所以循环体最少执行次数为零; 而do-while语句是先执行后判断, 循环体最少执行1次。 良好的程序程序书写风格 每行一个语句,并按照逻辑关系呈锯齿状排列。 必要的注释信息, 以利于程序的阅读和理解。 输入数据之前给出必要的提示。 输出结果力争清晰美观。,炸挥窜硫锭戎憨迢纺鸵蛆予撅羚懊祈灌部啪示酉感辐膜讹拒冤逮费坊丰异5 循环结构程序设计5 循环结构程序设计,#include main() float score;printf(“Input score:“); scanf(“%f“, /* 低于60的成绩 */ ,挨式耿颊毗措灭伎了监淆郝斜阀德络伟妄头倘把稚扇故系局蛀微暇莽逊辣5 循环结构程序设计5 循环结构程序设计,

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 企业管理 > 管理学资料

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报