循环结构程序设计

上传人:博****1 文档编号:568844292 上传时间:2024-07-27 格式:PPT 页数:44 大小:217KB
返回 下载 相关 举报
循环结构程序设计_第1页
第1页 / 共44页
循环结构程序设计_第2页
第2页 / 共44页
循环结构程序设计_第3页
第3页 / 共44页
循环结构程序设计_第4页
第4页 / 共44页
循环结构程序设计_第5页
第5页 / 共44页
点击查看更多>>
资源描述

《循环结构程序设计》由会员分享,可在线阅读,更多相关《循环结构程序设计(44页珍藏版)》请在金锄头文库上搜索。

1、宴尸镀谷砧吁升楚龄悉捂侄挖桨氛晴诀稚朵吞眼蝶硬懊贾紫癌开猩吭钵概循环结构程序设计循环结构程序设计第第5 5章章 循环结构程序设计循环结构程序设计 C C 语言程序设计语言程序设计凹遇淖绍三空舒膝壶蒙佣左敖蔷拉矢蛹缠娶钻暗徽讯缔听锡论藐见哟翱竿循环结构程序设计循环结构程序设计本章主要内容本章主要内容lwhile循环控制循环控制ldo-while循环控制循环控制lfor循环控制循环控制l用用goto语句实现循环控制语句实现循环控制l循环结构中的跳转语句循环结构中的跳转语句l循环的嵌套循环的嵌套l循环结构程序设计举例循环结构程序设计举例辑拭蓑凉者吝涨踌恩壬酷虾泻容惦朽绊光畦逐畔搽讽氧药报完耻九魄闺淡

2、循环结构程序设计循环结构程序设计25.1 while循环控制循环控制 l语句一般格式语句一般格式 while (表达式表达式) 语句语句 l l一般为一般为一般为一般为关系关系关系关系表达式表达式表达式表达式或或或或逻辑逻辑逻辑逻辑表达式,也表达式,也表达式,也表达式,也可以是可以是可以是可以是C C语言其他类语言其他类语言其他类语言其他类型的合法表达式型的合法表达式型的合法表达式型的合法表达式 l l用来控制循环体是用来控制循环体是用来控制循环体是用来控制循环体是否执行否执行否执行否执行l l称为称为称为称为内嵌语句内嵌语句内嵌语句内嵌语句,可以是基本语句、可以是基本语句、可以是基本语句、可

3、以是基本语句、控制语句,也可控制语句,也可控制语句,也可控制语句,也可以是复合语句以是复合语句以是复合语句以是复合语句l l是循环重复执行是循环重复执行是循环重复执行是循环重复执行的部分的部分的部分的部分 懂陪鞭唁捉樊三皆赛臆僻秃篷涉疾块犁湘式睫秃赔臃庙筹诈缸歇拦侗癌宽循环结构程序设计循环结构程序设计3功能:功能: l计算表达式的值计算表达式的值,为非,为非0(逻辑真)时,重复执(逻辑真)时,重复执行行内嵌语句内嵌语句,每执行一次,就判断一次表达式的,每执行一次,就判断一次表达式的值,直到表达式的值为值,直到表达式的值为0 时结束循环,转去执行时结束循环,转去执行while后面的语句。后面的语

4、句。 当表达式为真当表达式为真 语句语句N-SN-S结构图结构图结构图结构图N NY Y流程图流程图流程图流程图表表达达式式非非0?语句语句循环控制条件循环控制条件循环控制条件循环控制条件循环体循环体循环体循环体乒理乎箱樊瀑言登碟暮绞俘栋茸坍谷漫氯宠待搏熬钧尉涎窘蚌惮呈施坏哎循环结构程序设计循环结构程序设计4例如:例如:【例【例5.1】编写程序,求】编写程序,求100个自然数的和个自然数的和即:即: s=1+2+3+ +100 思路:寻找思路:寻找加数加数与与求和求和的规律的规律 加数加数i i从从1变到变到100,每循环一次,使,每循环一次,使i增增1,直到直到i的值超过的值超过100。i

5、i的的初值初值初值初值设为设为1。求和求和设变量设变量 sum sum 存放和存放和,循环求,循环求sum=sum+isum=sum+i,直至,直至i超过超过100。 匀婉坟越沙越扭拷卷晌菇祈这脚蛋奢愉贤能尚哲垄搜颇域写迈期吟障貉锻循环结构程序设计循环结构程序设计5算法和程序:算法和程序:main( ) int i,sum; i=1; sum=0; while (i=100) sum=sum+i; i+; printf(sum=%dn,sum);运行运行jc5_1程序输出结果:程序输出结果:sum=5050i i: : 循环控制变量循环控制变量sumsum: : 累加器累加器 i=1,sum=

6、0 当当i = 100 sum=sum+i i+输出输出sum迎雕充济岩范莉刹拷喜硒勒依竭矗笋滁赖痒功羹猛条檀型她李蝴套足枯红循环结构程序设计循环结构程序设计6注意:注意: l如果如果while的的 (表达式表达式) 值为值为0,则循环体一,则循环体一次也不执行次也不执行 (例如当例如当i的初值的初值=101) 。l在循环体中必须有使循环趋向结束的操作,在循环体中必须有使循环趋向结束的操作,否则循环将无限进行(否则循环将无限进行(死循环死循环)。)。 l在循环体中,语句的先后位置必须符合逻在循环体中,语句的先后位置必须符合逻辑,否则会影响运算结果。辑,否则会影响运算结果。 思考程序段的输出?思

7、考程序段的输出? while (i=100) i+; sum=sum+i; 运行后,输出:运行后,输出:运行后,输出:运行后,输出:sum=5150sum=5150原因是什么?原因是什么?原因是什么?原因是什么? 蚜凳虑疚叉祖蛮邀森臆姐梁趟姆晕苏瓦擅喂纹吹葬严拈停锤宪矛则汀荧谱循环结构程序设计循环结构程序设计7注意(续):注意(续):l为了保证循环正常运行,应该特别注意:为了保证循环正常运行,应该特别注意: 循环控制条件的描述循环控制条件的描述 控制条件的初始状态(初始值)控制条件的初始状态(初始值) 循环体内部对控制条件的影响循环体内部对控制条件的影响招滤逮味焊草迫组芳慢肆傀叠弦淬挂腋口贼彼

8、巷月钦扯蛛清洋召此棘付丛循环结构程序设计循环结构程序设计85.2 do-while语句语句l语句一般格式语句一般格式 do 语句语句 while (表达式表达式);); l l功能:功能: 先执行内嵌语句先执行内嵌语句(循环体),之后计算(循环体),之后计算表达式的值,不为表达式的值,不为0(逻辑真)时,再(逻辑真)时,再执行循环体并判断条件,直到表达式的执行循环体并判断条件,直到表达式的值为值为 0 结束循环,转去执行结束循环,转去执行while下面下面的语句。的语句。踩彪晃纺克墨乡来真孽可为费迈溺摹世缮落酶彦伊疵桨劣舶冗杠束乳苯臆循环结构程序设计循环结构程序设计9 do-while循环的算

9、法循环的算法 循环体循环体当表达式为真当表达式为真N-S结构图结构图NY循环体循环体表达式非表达式非0?流程图流程图main( ) int i=1,sum=0; do sum=sum+i; i+; while (i=100); printf(%dn,sum);用用用用do-whiledo-while语句语句语句语句求求求求100100个自然数的和个自然数的和个自然数的和个自然数的和 坝谓泵蛹湖否粒孔栽瓶聪塔茧锰趋拐塘溅祥纷蛹灭栓定叉皋赎烈验锥沂汤循环结构程序设计循环结构程序设计10说明:说明: lwhile和和do-while都能实现循环控制,都能实现循环控制,while结构程序通常都可以转换

10、成结构程序通常都可以转换成do-while结构结构l l区别:区别: do- while 语句语句先执行循环体再判断条先执行循环体再判断条件,循环体件,循环体至少执行一次至少执行一次; while 语句语句先判断条件再执行循环体,先判断条件再执行循环体,循环体有可能一次也不执行循环体有可能一次也不执行l ldowhile循环体中一定要有能使表达式值循环体中一定要有能使表达式值趋于趋于0的操作的操作(如如i+),否则会出现,否则会出现死循环死循环。 屋旦死袭君令帮级汕鲤特峪皂涪晰趟钱常乍夸咋歼节摹麻忍斌砂纬敷撮酒循环结构程序设计循环结构程序设计11do-while语句的简单应用语句的简单应用 【

11、例【例5.3】用辗转相除法求】用辗转相除法求m和和n的最大公约数的最大公约数定义定义m、n、rmnT F m和和n交换交换r=m%nm=nn=r 当当r != 0时时输出最大公约数输出最大公约数m积跪图徽搬虞欢墙即啤椒棱镊荤友潜缩柯拒喊氓亮坐右润器该菠圃绢耙氏循环结构程序设计循环结构程序设计12算法和程序:算法和程序:main( ) int m,n,r; scanf(%d, %d,&m,&n); if (mn) r=m; m=n; n=r; do r=m%n; m=n; n=r; while(r!=0); printf(%dn,m); 运行运行jc5_3程序运行情况如下:程序运行情况如下:程序

12、运行情况如下:程序运行情况如下:24, 6024, 60 1212冲峙讯锗掌募惜桃辩耽粥挚崖项簧尔窥汗毕伺拄猪诣瓜杨瞎哭徘污盼联垦循环结构程序设计循环结构程序设计135.3 for语句语句 l语句一般格式语句一般格式 for (表达式表达式1;表达式表达式2;表达式表达式3) 语句语句 l l功能:功能: 计算表达式计算表达式计算表达式计算表达式1 1的值,再的值,再的值,再的值,再判断表达式判断表达式判断表达式判断表达式2 2,如果其,如果其,如果其,如果其值为非值为非值为非值为非0 0(逻辑真),则执行内嵌语句(逻辑真),则执行内嵌语句(逻辑真),则执行内嵌语句(逻辑真),则执行内嵌语句(

13、 (循环体循环体循环体循环体) ),并,并,并,并计算表达式计算表达式计算表达式计算表达式3 3;之后再去判断表达式;之后再去判断表达式;之后再去判断表达式;之后再去判断表达式2 2,一直到其值为一直到其值为一直到其值为一直到其值为0 0时结束循环,执行后续语句。时结束循环,执行后续语句。时结束循环,执行后续语句。时结束循环,执行后续语句。循环初始条件循环初始条件循环初始条件循环初始条件循环控制条件循环控制条件循环控制条件循环控制条件循环体循环体循环体循环体乖择刑迷茬钵坍篓醇八术棋鲤们执逐锰蔷雅嗣椒份翘僳短经锄依妆聋蜘邱循环结构程序设计循环结构程序设计14for语句的算法语句的算法N-S结构图

14、结构图for (表达式表达式1;表达式表达式2;表达式表达式3) 语句语句NY流程图流程图计算表达式计算表达式1 语句语句计算表达式计算表达式3表达式表达式2为真为真?例如:例如:main( ) int i,sum; sum=0; for ( i=1; i=100; i+) sum=sum+i; printf(sum=%dn,sum);可部分或全部省略,可部分或全部省略,可部分或全部省略,可部分或全部省略,但但但但“ “; ;” ”不可省略不可省略不可省略不可省略系歉漂瑰容辞跳爹凋何杨斡歉竭珍糠衫涯铀猖馆乃兴去毙歇血包楼式阎硝循环结构程序设计循环结构程序设计15省略省略for语句的表达式语句的

15、表达式 表达式表达式1、2、3全省略,全省略,即:即: for ( ; ; ) for ( ; ; ) 就等同于:就等同于:就等同于:就等同于:while (while (1)1),会无限循环(,会无限循环(,会无限循环(,会无限循环(死循环死循环死循环死循环)注意:在省略某个表达式时,应在适当位置进行循注意:在省略某个表达式时,应在适当位置进行循环控制的必要操作,以保证循环的正确执行环控制的必要操作,以保证循环的正确执行 省略表达式省略表达式省略表达式省略表达式1 1和表达式和表达式和表达式和表达式3 3,即:即:即:即: for for(;表达式(;表达式(;表达式(;表达式2 2;);)

16、;);) 就等同于:就等同于:就等同于:就等同于:whilewhile( 表达式表达式表达式表达式2 2 ) 省略表达式省略表达式省略表达式省略表达式2 2,即:即:即:即: forfor(表达式(表达式(表达式(表达式1 1; ;表达式;表达式;表达式;表达式3 3) 就等同于:就等同于:就等同于:就等同于:表达式表达式表达式表达式1; while(1)1; while(1)表达式表达式表达式表达式3;3;乳驻衙涛慰铡序鹅氏溉枷译衔娥娶翁拦涨准豌兔嘱场花缴挤胡冬哟好格隅循环结构程序设计循环结构程序设计16例如:例如: i=1; for ( ; i100) for (i=1; i100) i+

17、; 仆怯甄辛窝所劈剃阀疟逃竿错年裁皿么举羚抵塞面旱区猛樊姐雹邯镰工慌循环结构程序设计循环结构程序设计17说明:说明:l所有用所有用 while 语句实现的循环都可以用语句实现的循环都可以用for 语句实现。语句实现。 等价于:等价于:for(表达式表达式1;表达式表达式2 ;表达式表达式3) 语句;语句;表达式表达式1;while (表达式表达式2) 语句;语句; 表达式表达式3; 贵蚊宠测泄翰技坍苫壬蛹涝俭灶翔哆役根烁旨莲恢扬拾叫嗽致苞碌泊讯豫循环结构程序设计循环结构程序设计18for语句的简单应用语句的简单应用【例【例5.4】求】求n! ,即计算,即计算p=123n的值。的值。 思路:求阶

18、乘与求累加的运算处理过程类似,只要思路:求阶乘与求累加的运算处理过程类似,只要将将“+ +”变为变为“* *”。设置:设置:乘数乘数乘数乘数i i ,初值为,初值为1,终值为,终值为n(n是循环控制终是循环控制终值,需要从键盘输入)值,需要从键盘输入)累乘器累乘器累乘器累乘器 p p ,每次循环令,每次循环令p = p*i池结抽旅伎祖纂宋哥眉槽绦裙猛搁恋父霉谬持本管镜舟闹专挖痔翌诧积队循环结构程序设计循环结构程序设计19程序:程序:main( ) int i, n; long p; p=1; printf(Enter n:); scanf(%d,&n); for (i=1; i=n; i+)

19、p = p * i; printf(p = %ld n,p);思考:思考:思考:思考:如何输出如何输出如何输出如何输出1!, 2!, , n! 1!, 2!, , n! ?如何求如何求如何求如何求s =1!+ 2!+ + n! s =1!+ 2!+ + n! ? 运行运行jc5_4丝崎反糟蓬绎皑鹰吁吁演聪齐卤云杏术俊渤噪苛诀霉茅砷晓嫌谣抚概五席循环结构程序设计循环结构程序设计20熟悉几个循环语句熟悉几个循环语句lwhile (!x) x+; 当当当当 x=0x=0 时,执行循环体时,执行循环体时,执行循环体时,执行循环体x+; x+; l lwhile (c=getchar( ) != n)

20、n=n+1; while (c=getchar( ) != n) n=n+1; n n 称为称为称为称为计数器计数器计数器计数器,作用是统计输入字符的个数,作用是统计输入字符的个数,作用是统计输入字符的个数,作用是统计输入字符的个数l lwhile (num+=2) ; printf(%dn,num);while (num+5); do x*=-3; while(x5); 先执行循环体先执行循环体先执行循环体先执行循环体x*=-3x*=-3,再判断条件,再判断条件,再判断条件,再判断条件(x5) (x5) l lfor (n=0; n26; n+) printf(%c , n+A); for

21、(n=0; n26; n+) printf(%c , n+A); 作用是作用是作用是作用是输出输出输出输出2626个大写字母个大写字母个大写字母个大写字母l lfor (sum=0, i=1; i=100; sum=sum+i, i+=2) ;for (sum=0, i=1; i=100; sum=sum+i, i+=2) ;作用是作用是作用是作用是计算计算计算计算100100以内的奇数和以内的奇数和以内的奇数和以内的奇数和 沙柔皆酮球炳蛰害仲锥甜百斩会铁焙曼矾悄庐丈野瞄七倘舅涧屉发潍害寇循环结构程序设计循环结构程序设计21几种循环语句的比较几种循环语句的比较lwhile和和do-while语

22、句的语句的表达式表达式只有只有一个一个,for语语句有句有三个三个。lwhile 和和for先判断先判断循环条件循环条件后执行后执行循环体,循环体,do-while语句语句先执行先执行循环体循环体后判断后判断循环条件。循环条件。whilewhile语句多用于语句多用于语句多用于语句多用于循环次数不定循环次数不定循环次数不定循环次数不定的情况的情况的情况的情况do-whiledo-while语句多用于语句多用于语句多用于语句多用于至少要运行一次至少要运行一次至少要运行一次至少要运行一次的情况的情况的情况的情况forfor语句语句语句语句多用于要多用于要多用于要多用于要赋初值赋初值赋初值赋初值或或

23、或或循环次数固定循环次数固定循环次数固定循环次数固定的情况的情况的情况的情况办吕全臼怔歧蓖铬肛蛔妨崎独娇肌街湿烫胃寂垫改督株杂暂武粪贯芳危戴循环结构程序设计循环结构程序设计225.4 用用goto语句实现循环语句实现循环l有兴趣的同学自学有兴趣的同学自学l不提倡使用不提倡使用goto语句语句注意注意:goto语句能实现程序无条件转移,为编程语句能实现程序无条件转移,为编程提供了便利。但是无限制地使用,会破坏提供了便利。但是无限制地使用,会破坏程序的结构化程度。程序的结构化程度。因此应限制使用。因此应限制使用。殃狞陋仑碉蓟嘴幢售谆亲涨浩子攘芋驳姐官岗臻夹问侠宰萝波惫熏胎傣朱循环结构程序设计循环结

24、构程序设计235.5 循环结构中的跳转语句循环结构中的跳转语句l有如下三种语句实现跳转:有如下三种语句实现跳转: continue语句语句 break语句语句 goto语句语句l l在循环语句的循环体中使用,可以进行在循环语句的循环体中使用,可以进行循环的流程控制循环的流程控制泳伴涌秦询肯鲍胡乘庶獭萧邱它谅逐跟星沟女捡嫂派恃宗卡荡企墨罚邵段循环结构程序设计循环结构程序设计24后续语句后续语句continue;continue; Y YN N表达式表达式表达式表达式? ?后续语句后续语句continue;continue;表达式表达式表达式表达式? ?Y YN N5.5.1 continue语句

25、及应用语句及应用 l功能:功能: 中断循环体的本次执行(即跳过循环体中尚中断循环体的本次执行(即跳过循环体中尚中断循环体的本次执行(即跳过循环体中尚中断循环体的本次执行(即跳过循环体中尚未执行的语句),立即开始执行下一次循环。未执行的语句),立即开始执行下一次循环。未执行的语句),立即开始执行下一次循环。未执行的语句),立即开始执行下一次循环。whilewhile语句语句语句语句do-whiledo-while语句语句语句语句后续语句后续语句计算表达式计算表达式计算表达式计算表达式3 3计算表达式计算表达式计算表达式计算表达式1 1continue;continue;表达式表达式表达式表达式2

26、?2?Y YN Nforfor语句语句语句语句丈搁钠咋滥卷荷身容胜痈旋阀椰盈盲行瓶福行势糕潭着脉镣棍遭煞撬澎饭循环结构程序设计循环结构程序设计25例如:例如: int x,n=0,s=0;while (n10)while (n10) scanf(%d,&x); scanf(%d,&x); if (x0) continue;if (x0) continue; s+=x; n+;s+=x; n+; ; ; int x,n=0,s=0; int x,n=0,s=0;dodo scanf(%d,&x); scanf(%d,&x); if (x0) continue;if (x0) continue;

27、s+=x; n+;s+=x; n+; while (n10); while (n10); for (n=0,s=0; n10; n+) for (n=0,s=0; n10; n+) scanf(%d,&x); scanf(%d,&x); if (x0) continue;if (x0) continue; s+=x; s+=x; 韦岳革恢椎昌款拜陇剃文蔗舟徘落膳倪念历辣恃验卫糙忧傅妥聊捶矩霍椿循环结构程序设计循环结构程序设计26应用举例应用举例 【例【例5.7】把】把100200之间能被之间能被7整除的数,整除的数,以十个数为一行的形式输出,最后以十个数为一行的形式输出,最后输出一共有多少个这

28、样的数。输出一共有多少个这样的数。 for (n=100; n=200; n+) n能被能被7整除整除 T F 终止本次循环终止本次循环 输出输出n 输出输出10个数个数 T F 换行换行酚憨捡恬招蜀俱警凡诅瞩刷亏蝇毙尼睡轧蹲腑找遁赔捻韦咽擅幕压伺仲讶循环结构程序设计循环结构程序设计27算法和程序算法和程序main( ) int n,j=0; for(n=100;n=200;n+) if (n%7!=0) continue; printf(%6d,n); j+; if (j%10=0) printf(n); printf( n j=%dn,j); 运行运行jc5_7作洞下摆醉宜挺骡困峻狮部售鄂

29、禹独隋手沤捌倍麻摩抨晓嘱诡析灶票帆贪循环结构程序设计循环结构程序设计28后续语句后续语句break;break;Y YN N表达式表达式表达式表达式? ?后续语句后续语句break;break;表达式表达式表达式表达式? ?Y YN N5.5.2 循环中循环中break的应用的应用l功能:功能: 利用利用break语句能够强迫终止本层循环,语句能够强迫终止本层循环,转到后续语句执行。转到后续语句执行。whilewhile语句语句语句语句do-whiledo-while语句语句语句语句后续语句后续语句计算表达式计算表达式计算表达式计算表达式3 3计算表达式计算表达式计算表达式计算表达式1 1br

30、eak;break;表达式表达式表达式表达式2?2?Y YN Nforfor语句语句语句语句艘微栗东丙稚燃匈衬歹迅瞅宙抒宛给募昌谎矿羊液铱慧胞愁钻际留策故境循环结构程序设计循环结构程序设计29例如:例如: int x,n=0,s=0;while (n10)while (n10) scanf(%d,&x); scanf(%d,&x); if (x0) break;if (x0) break; s+=x; n+; s+=x; n+; ; ; int x,n=0,s=0; int x,n=0,s=0;dodo scanf(%d,&x); scanf(%d,&x); if (x0) break;if

31、(x0) break; s+=x; n+; s+=x; n+; while (n10); while (n10); for (n=0,s=0; n10; n+ ) for (n=0,s=0; n10; n+ ) scanf(%d,&x); scanf(%d,&x); if (x0) break;if (x0) break; s+=x; s+=x; 陕选组隙阮异焉楼肩洋嫌懒巍辰爷釜须仟筋孜针陀伏截呈彦耿蔼障果屯咎循环结构程序设计循环结构程序设计305.6 循环的嵌套循环的嵌套l如果循环语句的循环体内又包含了另一条如果循环语句的循环体内又包含了另一条循环语句,则称为循环的嵌套循环语句,则称为循环的

32、嵌套l l例如:例如: #include main( ) int i, j; for ( i=1; i10; i+ ) for ( j=1; j=i; j+ ) printf (j=i)?%4dn:%4d,i*j); 运行运行jc5_a外循环语句外循环语句内循环语句内循环语句沁娩徊瓜纫锤暖攒气钮娜渗巩贪穷娱涝藩伊尖枫堑虏漾戒奥睛伪霸茂莽屿循环结构程序设计循环结构程序设计31注意:注意:lwhile、do-while、for循环语句可以并列,循环语句可以并列,也可以相互嵌套,但也可以相互嵌套,但要层次清楚,不能出要层次清楚,不能出现交叉。现交叉。l多多重重循循环环程程序序执执行行时时,外外层层循

33、循环环每每执执行行一一次,内层循环都需要循环执行多次。次,内层循环都需要循环执行多次。l例如:例如:for(a=1;a=10;a+) for (b=0;b2n2)f fn n= = l l设设设设 变变变变 量量量量 f1f1、 f2f2和和和和 f3f3, 并并并并 为为为为 f1f1和和和和 f2f2赋赋赋赋 初初初初 值值值值 1 1, 令令令令f3=f1+f2f3=f1+f2得到第得到第得到第得到第3 3项;项;项;项;l l将将将将f1f2f1f2, f2f3 f2f3,再求,再求,再求,再求f3=f1+f2f3=f1+f2得到第得到第得到第得到第4 4项;项;项;项;l l依此类推

34、求第依此类推求第依此类推求第依此类推求第5 5项、第项、第项、第项、第6 6项项项项这是一种这是一种这是一种这是一种递推算法递推算法递推算法递推算法应采用循环实现应采用循环实现应采用循环实现应采用循环实现蠢臀鹏芹歉菲镣奄鳞末遮洞蜀遵肤岂堰卉随层斧签桔蜘凹宾土聪堆朽俞菱循环结构程序设计循环结构程序设计33算法和程序算法和程序#define N 20main( ) int i,f1,f2,f3; f1=f2=1; printf(n%8d%8d,f1,f2); for (i=3; i=N; i+) f3=f1+f2; f1=f2; f2=f3; printf(%8d,f3); if (i%5=0)

35、printf(n); f1=1,f2=1并输出并输出for (i=3; i=20; i+) f3=f2+f1 f1=f2,f2=f3 输出输出f3 输出输出输出输出5 5个数个数个数个数 T F 换行换行运行运行jc5_5娱歧臼状索鸿咯灯获周温纶海苦愿沪碘拓食酣顷李敬搽肃派庇窝见每簿忌循环结构程序设计循环结构程序设计34举例举例2【例【例5.12】判断输入的某个数】判断输入的某个数m是否为素数。是否为素数。若是素数,输出若是素数,输出“YES”,若不是,若不是,输出输出“NO”。 思路:素数是指只能被思路:素数是指只能被思路:素数是指只能被思路:素数是指只能被1 1和它本身整除的数,如和它本身

36、整除的数,如和它本身整除的数,如和它本身整除的数,如5 5、7 7、1111、1717、等。等。等。等。 l分分别别用用2 2、3 3、,m-1m-1尝尝试试能能否否整整除除整整数数m m m m。如果如果如果如果mm能被某个能被某个能被某个能被某个数数数数整除,则整除,则整除,则整除,则mm就不是素数。就不是素数。就不是素数。就不是素数。l l这是一种这是一种这是一种这是一种穷举算法穷举算法穷举算法穷举算法l l设除数为设除数为设除数为设除数为j j,从,从,从,从2 2循环到循环到循环到循环到m-1m-1宦扬浪衫殴堪禁瞬卯扮称煤蔑拽缀煽豹泅鱼授素寺州谴埋耗帛遏易咀抡礁循环结构程序设计循环结

37、构程序设计35算法和程序:算法和程序:#include math.hmain( ) int j,m,k; printf(Enter an integer number: ); scanf(%d,&m); for (j=2; j=m) printf(YESn); else printf(NOn); 输入一个数输入一个数mfor (j=2; j=m T F输出输出YES“ 输出输出NO运行运行jc5_12袄冬梭邹砖南怀敖济暖软铜绷淆紫鞭拼援戳黎烯扳泵微蝉材港懦牵忱楚掏循环结构程序设计循环结构程序设计36程序的优化程序的优化l对于对于穷举法穷举法来说,为了提高程序的效率,来说,为了提高程序的效率,就

38、要减少就要减少尝试次数尝试次数。#include math.hmain( ) int j,m,k; printf(Enter an integer number: ); scanf(%d,&m); k=sqrt(m);k=sqrt(m); for (j=2; j=kj=k+1j=k+1) printf(YESn); else printf(NOn);思考:如何输出思考:如何输出思考:如何输出思考:如何输出100100200200中所有的素数中所有的素数中所有的素数中所有的素数 瘪炸或符骤狙啸脆情冤逻蛮抒屁骇穗坑砂玲统酞朗海坑匀谓糙澳俐乐极条循环结构程序设计循环结构程序设计37举例举例3【例【例

39、5.13】用牛顿迭代法求方程】用牛顿迭代法求方程 2x3+4x2-7x-6=0 在在x=1.5附近的根。附近的根。 思路:思路:思路:思路:设设xn为一个接近为一个接近xa的近似根,过的近似根,过(xn, f(xn) 点做切线,切线方程为:点做切线,切线方程为:即即:xnxn+1xy0f(x)(xn, f(xn)(xn+1, f(xn+1) xa 方程的根方程的根方程的根方程的根牛顿迭代公式牛顿迭代公式牛顿迭代公式牛顿迭代公式 圈刀块婚门残坍碱闺拳惫贵这苯晶董股亡穆厌仆俞催跺挥竭盏嘎泄坚烃郎循环结构程序设计循环结构程序设计38算法基本步骤:算法基本步骤: 先先设设一一个个方方程程近近似似根根x

40、0,求求出出方方程程f的的值值和和方方程程导数导数f1的值的值;f=2x03+4x02-7x0-6f1=6x02+8x0-7 用用迭迭代代公公式式x=x0-f/f1进进行行迭迭代代,求求出出x比比x0要要接接近方程真实的根;近方程真实的根; 当当|x-x0|大大于于某某个个很很小小的的数数时时(如如10-6),认认为为未未找找到到,此此时时将将xx0,再再次次求求f、f1,并并迭迭代代,又又求出一个新的更接近方程根的求出一个新的更接近方程根的x; 一直到一直到 |x-x0|10-6时得到方程近似根:时得到方程近似根:x或或x0。l l这是一种这是一种这是一种这是一种迭代算法迭代算法迭代算法迭代

41、算法l l用循环实现用循环实现用循环实现用循环实现拦逛萤垫署莉而倦本淌座围赖浇轻瞅芬槛贼孺虾惦酮床并尊氯忧寞秽物饵循环结构程序设计循环结构程序设计39算法和程序:算法和程序:#include math.hmain( ) float x,x0,f,f1; x=1.5; do x0=x; f=2*x0*x0*x0+4*x0*x0-7*x0-6; f1=6*x0*x0+8*x0-7; x=x0-f/f1; while(fabs(x-x0)1e-6); printf(%fn,x);x赋初值赋初值x0=x计算计算f计算计算f1 计算计算x=x0-f/f1当当 |x-x0|10-6时时输出输出x运行运行j

42、c5_13匙岛砾辊卞柯孩塑饥娥济涕墓嗡喊淤垦距荧蝶否豪惯蹬缄杭振卿衣萎逢审循环结构程序设计循环结构程序设计40举例举例4【例【例5.11】编程序求】编程序求210000以内的完全数。以内的完全数。 完全数:完全数:完全数:完全数:一个数的因子(除了这个数本身)之和一个数的因子(除了这个数本身)之和等于该数本身。等于该数本身。思路:思路:思路:思路:设定设定设定设定i i从从从从2 2变到变到变到变到1000010000,对每个,对每个,对每个,对每个i i找到其因子和找到其因子和找到其因子和找到其因子和s s;判定判定判定判定 i is s?若相等,则?若相等,则?若相等,则?若相等,则i i

43、为完全数,否则不是。为完全数,否则不是。为完全数,否则不是。为完全数,否则不是。 例如:例如:例如:例如:6 6的的因子因子是是1、2、3,因子和因子和 1+2+36 6因此因此因此因此 6 6 是完全数是完全数是完全数是完全数l l使用使用使用使用穷举算法穷举算法穷举算法穷举算法l l用用用用双层循环双层循环双层循环双层循环实现实现实现实现棍夯琅剪著钦恐瞎目表臀福改彻箔种蔡敛吏剪杆獭蛇锥盲镀仲髓潭玻沪杨循环结构程序设计循环结构程序设计41算法和程序:算法和程序:main( ) int i,j,s; for (i=2; i=10000; i+) s=0; for (j=1; ji; j+) i

44、f (i%j=0) s+=j; if (i=s) printf(%6dn,s); for(i=2;i=10000; i+) s = 0 for (j=1; ji; j+) i%j=0 T F s=s+j i=s T F i是完全数是完全数运行运行jc5_11谊宙盛痛哟仕茨硼的低宰试哲杏峻掀概盟唐碳播厘翻认绪半莎趾辞校覆音循环结构程序设计循环结构程序设计42举例举例5【例【例5.10】编程序,输出以下图形。】编程序,输出以下图形。 * * * *一共有一共有一共有一共有4 4 行,每行由空格和星号组成:空格数行,每行由空格和星号组成:空格数行,每行由空格和星号组成:空格数行,每行由空格和星号组成

45、:空格数按行增加,星号按行减少按行增加,星号按行减少按行增加,星号按行减少按行增加,星号按行减少变量变量变量变量 i i 控制输出行数,控制输出行数,控制输出行数,控制输出行数, 从从从从1 1变化到变化到变化到变化到4 4变量变量变量变量 j j 控制输出每行的空格和星号:控制输出每行的空格和星号:控制输出每行的空格和星号:控制输出每行的空格和星号:j j 从从从从1 1变化到变化到变化到变化到 i i,每次输出一个空格,每次输出一个空格,每次输出一个空格,每次输出一个空格 j j 从从从从1 1变化到变化到变化到变化到 8-28-2* *i i1 1,每次输出一个星号,每次输出一个星号,每

46、次输出一个星号,每次输出一个星号使用使用使用使用双重循环双重循环双重循环双重循环实现实现实现实现思路:思路:思路:思路:帧明簇臆爱然铣吭礼希种人吾卤薪钳润避鼎呆芬宽叭紫蜒仁豁遗昆妒脆秀循环结构程序设计循环结构程序设计43算法和程序:算法和程序:main( ) int i,j; for (i=1; i=4; i+) for (j=1; j=i; j+) printf( ); for (j=1;j=8-(2*i-1);j+) printf(*); printf(n); for (i=1; i=4; i+) for (j=1; j=i; j+) 输出一个空格输出一个空格 for (j=1; j=8- -(2*i- -1); j+) 输出一个星号输出一个星号 换行换行思考:思考:思考:思考:l l如何输出如何输出如何输出如何输出1010行行行行图形?图形?图形?图形? l l输出图形向右输出图形向右输出图形向右输出图形向右平移平移平移平移2020个字符个字符个字符个字符位置,应如何修改程序?位置,应如何修改程序?位置,应如何修改程序?位置,应如何修改程序? 运行运行jc5_10剖术佃苛汪咽峨铝铁浇睡禹稗宫葬闲题赫唯京祷唐秩岗琼桶叫逼岂酉藕隶循环结构程序设计循环结构程序设计44

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 医学/心理学 > 基础医学

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号