第5章循环结构

上传人:新** 文档编号:570203795 上传时间:2024-08-02 格式:PPT 页数:65 大小:504KB
返回 下载 相关 举报
第5章循环结构_第1页
第1页 / 共65页
第5章循环结构_第2页
第2页 / 共65页
第5章循环结构_第3页
第3页 / 共65页
第5章循环结构_第4页
第4页 / 共65页
第5章循环结构_第5页
第5页 / 共65页
点击查看更多>>
资源描述

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

1、仙殖集狮撒逐历狼迄试瘁赋潞晴杏疵邑奇筷锄契妥沛厕呀股鹏譬歌亭器骇第5章循环结构第5章循环结构第第5 5章章 循环结构程序设计循环结构程序设计 C C 语言程序设计语言程序设计掉姨煎执晤递弗洁腮恳掂回我鹃惟扁耍统耙较平豪读智扯琢梦峭裙剃境吝第5章循环结构第5章循环结构5.1 while循环控制循环控制 (P50)l语句一般格式语句一般格式 while (表达式表达式) 语句语句 l l一般为一般为一般为一般为关系关系关系关系表达式或表达式或表达式或表达式或逻辑逻辑逻辑逻辑表达式,也可以表达式,也可以表达式,也可以表达式,也可以是是是是C C语言其他类型的语言其他类型的语言其他类型的语言其他类型的

2、合法表达式合法表达式合法表达式合法表达式 l l用来控制循环体是否用来控制循环体是否用来控制循环体是否用来控制循环体是否执行执行执行执行l l称为称为称为称为内嵌语句内嵌语句内嵌语句内嵌语句,可以,可以,可以,可以是基本语句、控制语是基本语句、控制语是基本语句、控制语是基本语句、控制语句,也可以是复合语句,也可以是复合语句,也可以是复合语句,也可以是复合语句句句句l l是循环重复执行的部是循环重复执行的部是循环重复执行的部是循环重复执行的部分分分分 献猪苦伴义壮折输根孕尖妖蓖跑饱寇舌消畏函惶庆用地常掩拌惟威削赌挽第5章循环结构第5章循环结构2功能:功能: l计算表达式的值计算表达式的值,为非,

3、为非0(逻辑真)时,重复执(逻辑真)时,重复执行行内嵌语句内嵌语句,每执行一次,就判断一次表达式的,每执行一次,就判断一次表达式的值,直到表达式的值为值,直到表达式的值为0 时结束循环,转去执行时结束循环,转去执行while后面的语句。后面的语句。 当表达式为真当表达式为真 语句语句N-SN-S结构图结构图结构图结构图N NY Y流程图流程图流程图流程图表表达达式式非非0?语句语句循环控制条件循环控制条件循环控制条件循环控制条件循环体循环体循环体循环体图道窃疑董彰崖健陀铱完场个些泡挣劫母陷绰喊层洗棠玖岿即躯脯颠完右第5章循环结构第5章循环结构3例如:例如:【例】编写程序,求【例】编写程序,求1

4、00个自然数的和个自然数的和即:即: s=1+2+3+ +100 思路:寻找思路:寻找加数加数与与求和求和的规律的规律 加数加数i i从从1变到变到100,每循环一次,使,每循环一次,使i增增1,直到直到i的值超过的值超过100。i i的的初值初值初值初值设为设为1。求和求和设变量设变量 sum sum 存放和存放和,循环求,循环求sum=sum+isum=sum+i,直至,直至i超过超过100。 铰乒砚贮绥葛搐尺鉴泞戈润糟归亮镑剃掠萧纹柴展碰邹袁堑唁钦外浆卤爬第5章循环结构第5章循环结构4算法和程序:算法和程序:main( ) int i,sum; i=1; sum=0; while (i=

5、100) sum=sum+i; i+; printf(sum=%dn,sum);程序输出结果:程序输出结果:sum=5050i i: : 循环控制变量循环控制变量sumsum: : 累加器累加器 i=1,sum=0 当当i = 100 sum=sum+i i+输出输出sum袱备穴俯姥藏湍羹飞滩糊乾霸边乃韧阂面短呕到碾叠桂赢戮层旱脉菇苍躯第5章循环结构第5章循环结构5注意:注意: l如果如果while的的 (表达式表达式) 值为值为0,则循环体一,则循环体一次也不执行次也不执行 (例如当例如当i的初值的初值=101) 。l在循环体中必须有使循环趋向结束的操作,在循环体中必须有使循环趋向结束的操作

6、,否则循环将无限进行(否则循环将无限进行(死循环死循环)。)。 l在循环体中,语句的先后位置必须符合逻在循环体中,语句的先后位置必须符合逻辑,否则会影响运算结果。辑,否则会影响运算结果。 思考程序段的输出?思考程序段的输出? while (i=100) i+; sum=sum+i; 运行后,输出:运行后,输出:运行后,输出:运行后,输出:sum=5150sum=5150原因是什么?原因是什么?原因是什么?原因是什么? 再匠游绣邮铲蚂注疾蚊谆勒汉还苟关驼右胜秩兼磊世无缘最未鬃烽遮氛眠第5章循环结构第5章循环结构6注意(续):注意(续):l为了保证循环正常运行,应该特别为了保证循环正常运行,应该特

7、别注意:注意: 循环控制条件的描述循环控制条件的描述 控制条件的初始状态(初始值)控制条件的初始状态(初始值) 循环体内部对控制条件的影响循环体内部对控制条件的影响导转夸修怎狄似绢您抱惯砰接湃末缴抨或屋桩杆士紧陡窖当阔韧蔚务杜淀第5章循环结构第5章循环结构7例例 ,显示显示110的平方的平方#include main() int i=1; while(i=10) printf(%d*%d=%dn,i,i,i*i); i+; 运行结果:运行结果:1*1=12*2=43*3=94*4=165*5=256*6=367*7=498*8=649*9=8110*10=100咳钦吸隐焚葛莲途趁双席侠罐导屑轩

8、著炸迁沥拌阻泅巡垛桃埂卜裙极炎鄂第5章循环结构第5章循环结构8 #include main() int i=0,sum=0; while(sum10000) sum+=i*i; i+; printf(“i=%d sum=%dn,i-1,sum); 【例5.1】:编写程序,求122232n2,直到累加和大于或等于10000为止。程序运行结果:i31 sum=10416思考?思考? while (sum10000) i+; sum+=i*i; 瞎有遁廷暂搐二屠漾船羌铁意驴慰干迁翱翱耙肘荣樱曹凝霍楼轿迄赏非嘿第5章循环结构第5章循环结构9程序运行结果:程序运行结果:i30 sum=10415 #in

9、clude main() int i=1,sum=0; while(sum10000) i+; sum+=i*i; printf(“i=%d sum=%dn,i-1,sum); 不符合题目不符合题目要求要求玲俩智夹召遏拴拆深虚笨钟我唯嗽秸痢洞驱湿岁竹邮贤雨崖任偏条绞啥心第5章循环结构第5章循环结构10思路:使用循环不断累加每项,每一项的分母比前一项 增加2,符号相反设置:l l设s为符号位,n为每项分母, t为每项值,t=s/nl l每循环一次,s符号改变一次s=-s,分母加2,n=n+2l lpi为所求 /4的值,pi=pi+t例例5.2 用用 公式求公式求 的近的近似值,直到最后一项的绝对

10、值小于似值,直到最后一项的绝对值小于10-6为止为止 嘿箩择恨垛彻精删图孵听争力冕傻率种羌转扭牟扶拷唾孩搪宾屎恃跪咀苞第5章循环结构第5章循环结构11#include #include main( ) int s=1; float n=1.0,t=1.0,pi=0; while(fabs(t)=1e-6) pi=pi+t; n+=2.0; s=-s; t=s/n; pi=pi*4; printf(“pi=%fn,pi); 执行结果:执行结果:pi=3.141594设设s为符号位,为符号位,n为每项为每项分母,分母, t为每项值,为每项值,pi为所求为所求 的值的值罐浑穆桔童垦希飘剪淋莫昆岳赏裔

11、戍贩舒苞初栓润暖论知仆得廉狗硬恬围第5章循环结构第5章循环结构125.2 do-while语句语句(P53)l语句一般格式语句一般格式 do 语句语句 while (表达式表达式); l l功能:功能: 先执行内嵌语句先执行内嵌语句(循环体),之后计算(循环体),之后计算表达式的值,不为表达式的值,不为0(逻辑真)时,再(逻辑真)时,再执行循环体并判断条件,直到表达式的执行循环体并判断条件,直到表达式的值为值为 0 结束循环,转去执行结束循环,转去执行while下面下面的语句。的语句。柑个蕴胶嘎卜译憎能舰孤醒坪锦沉哥硅啦瘩退忆嗜剁团尧凑竿莉赦睫词夫第5章循环结构第5章循环结构13 do-whi

12、le循环的算法循环的算法 循环体循环体当表达式为真当表达式为真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个自然数的和个自然数的和个自然数的和个自然数的和 其昨聪掺煮异状了窘场织叭俄从赢钻拣污痈叼练赣侯掠辖抿画胰讨渭恳绊第5章循环结构第5章循环结构14说明:说明: lwhile和和do-while都能实现循环控制,都能实现循环控制,while结构程序通常都

13、可以转换成结构程序通常都可以转换成do-while结构结构l l区别:区别: do- while 语句语句先执行循环体再判断条先执行循环体再判断条件,循环体件,循环体至少执行一次至少执行一次; while 语句语句先判断条件再执行循环体,先判断条件再执行循环体,循环体有可能一次也不执行循环体有可能一次也不执行l ldowhile循环体中一定要有能使表达式值循环体中一定要有能使表达式值趋于趋于0的操作的操作(如如i+),否则会出现,否则会出现死循环死循环。 婴茂马片斗其胀独街沃尸挪拙钥灭瞒骨傻骄阐吐苔骗枚廊猪问甸慕董苑删第5章循环结构第5章循环结构15do-while语句的简单应用语句的简单应用

14、 【例】用辗转相除法求【例】用辗转相除法求m和和n的最大公约数的最大公约数定义定义m、n、rmnT F m和和n交换交换r=m%nm=nn=r 当当r != 0时时输出最大公约数输出最大公约数m宪靡漾埃碾芯劳锐裔渊虞峨后蹋而惭唐葫甥克励箭蕊兢私坏颊拉免胡过抑第5章循环结构第5章循环结构16算法和程序:算法和程序:main( ) int m,n,r; scanf(%d, %d,&m,&n); if (m2n2)f fn n= = l l设设设设变变变变量量量量f1f1、f2f2和和和和f f,并并并并为为为为f1f1和和和和f2f2赋赋赋赋值值值值为为为为0 0和和和和1 1,令令令令f=f1+

15、f2f=f1+f2得到第得到第得到第得到第3 3项;项;项;项;l l将将将将f1f2f1f2, f2f f2f,再求,再求,再求,再求f=f1+f2f=f1+f2得到第得到第得到第得到第4 4项;项;项;项;l l依此类推求第依此类推求第依此类推求第依此类推求第5 5项、第项、第项、第项、第6 6项项项项这是一种这是一种这是一种这是一种递推算法递推算法递推算法递推算法应采用循环实现应采用循环实现应采用循环实现应采用循环实现闸侗溪锤垄橇抢隐狄砚矮哩锣纷绰费推胚兆告夕梅臀峡行饰剩妙签酞杂氮第5章循环结构第5章循环结构18算法和程序算法和程序#includemain( ) int f1,f2,f;

16、 f1=0;f2=1; do f=f1+f2; f1=f2; f2=f; while(f2=1000); printf(“F=%dn“,f2); f1=0,f2=1 f=f1+f2 f1=f2 f2=f 当当f2=1000时时打印打印f2执行结果:执行结果:F=1597薛遣洗仓吉喳瘸浸域钨题忆藻拆荧逊云类迂刨俩分匆钙弯袱斡楷阁骇档顺第5章循环结构第5章循环结构195.3 for语句语句 (P55)l语句一般格式语句一般格式 for (表达式表达式1;表达式表达式2;表达式表达式3) 语句语句 l l功能:功能: 计算表达式计算表达式计算表达式计算表达式1 1的值,再的值,再的值,再的值,再判断

17、表达式判断表达式判断表达式判断表达式2 2,如果其,如果其,如果其,如果其值为非值为非值为非值为非0 0(逻辑真),则执行内嵌语句(逻辑真),则执行内嵌语句(逻辑真),则执行内嵌语句(逻辑真),则执行内嵌语句( (循环体循环体循环体循环体) ),并,并,并,并计算表达式计算表达式计算表达式计算表达式3 3;之后再去判断表达式;之后再去判断表达式;之后再去判断表达式;之后再去判断表达式2 2,一直到其值为一直到其值为一直到其值为一直到其值为0 0时结束循环,执行后续语句。时结束循环,执行后续语句。时结束循环,执行后续语句。时结束循环,执行后续语句。循环初始条件循环初始条件循环初始条件循环初始条件

18、循环控制条件循环控制条件循环控制条件循环控制条件循环体循环体循环体循环体焊再镇樊丫凸岳河蒋馏踪韦崖讽借叙俯容懦巨山土惠祖段挺芯掩皿沃拭效第5章循环结构第5章循环结构20for语句的算法语句的算法N-S结构图结构图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);可部分或全部省略,可部分或全部省略,可部分或全部省略,可

19、部分或全部省略,但但但但“ “; ;” ”不可省略不可省略不可省略不可省略孽察疼碍详羔尤伪厩绅辨濒哈掇领坠绵涯遣舱泌护朝艇簇父望辫影棋铝听第5章循环结构第5章循环结构21for语句的简单应用语句的简单应用【例】求【例】求n! ,即计算,即计算p=123n的值。的值。 思路:求阶乘与求累加的运算处理过程类似,只要思路:求阶乘与求累加的运算处理过程类似,只要将将“+ +”变为变为“* *”。设置:设置:乘数乘数乘数乘数i i ,初值为,初值为1,终值为,终值为n(n是循环控制终是循环控制终值,需要从键盘输入)值,需要从键盘输入)累乘器累乘器累乘器累乘器 p p ,每次循环令,每次循环令p = p*

20、i哼贝相唇桨囤幕扰泥窗皂履盎隆纪露例际摸圈弱腾筷洒呼盘匆皇愤感俯醉第5章循环结构第5章循环结构22程序:程序:main( ) int i, n; long p; p=1; printf(Enter n:); scanf(%d,&n); for (i=1; i=n; i+) p = p * i; printf(p = %ld n,p);思考:思考:思考:思考:如何输出如何输出如何输出如何输出1!, 2!, , n! 1!, 2!, , n! ?如何求如何求如何求如何求s =1!+ 2!+ + n! s =1!+ 2!+ + n! ? 索赣职右播啤瘩状收蜕铡刁腆鬼溪已震蕴僻摘注喀趾嚼她艳驹蔗侠血渊

21、忘第5章循环结构第5章循环结构23【例【例5.6】计算半径为】计算半径为0.5mm、1.0mm、1.5mm、2.0mm、2.5mm时的圆面积时的圆面积#includemain( ) double r,s,Pi=3.1416; for (r=0.5; r2n2)f fn n= = l l设设设设 变变变变 量量量量 f1f1、 f2f2和和和和 f3f3, 并并并并 为为为为 f1f1和和和和 f2f2赋赋赋赋 初初初初 值值值值 1 1, 令令令令f3=f1+f2f3=f1+f2得到第得到第得到第得到第3 3项;项;项;项;l l将将将将f1f2f1f2, f2f3 f2f3,再求,再求,再求

22、,再求f3=f1+f2f3=f1+f2得到第得到第得到第得到第4 4项;项;项;项;l l依此类推求第依此类推求第依此类推求第依此类推求第5 5项、第项、第项、第项、第6 6项项项项这是一种这是一种这是一种这是一种递推算法递推算法递推算法递推算法应采用循环实现应采用循环实现应采用循环实现应采用循环实现掠瘸羹固宁拢端惑儿酗化掷舔毕锑祸壹拐莉纳订您冕焉劳砌扔陆腔美真物第5章循环结构第5章循环结构25算法和程序算法和程序#define N 20main( ) int i,f1,f2,f3; f1=f2=1; printf(n%8d%8d,f1,f2); for (i=3; i=N; i+) f3=f

23、1+f2; f1=f2; f2=f3; printf(%8d,f3); if (i%5=0) printf(n); f1=1,f2=1并输出并输出for (i=3; i=20; i+) f3=f2+f1 f1=f2,f2=f3 输出输出f3 输出输出输出输出5 5个数个数个数个数 T F 换行换行嗽恶镐录撩蚀省遥壁卜茨豢养撰勘萌竭壶狞糕昂酶腋手撂祭恃炭吼盎吐怨第5章循环结构第5章循环结构26省略省略for语句的表达式语句的表达式 表达式表达式1、2、3全省略,全省略,即:即: for ( ; ; ) for ( ; ; ) 就等同于:就等同于:就等同于:就等同于:while (while (1

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

25、 forfor(表达式(表达式(表达式(表达式1 1; ;表达式;表达式;表达式;表达式3 3) 就等同于:就等同于:就等同于:就等同于:表达式表达式表达式表达式1; while(1)1; while(1)表达式表达式表达式表达式3;3;衷吱山偏孟柴霹破境涤翟均秦锅苹翟狡端融窘遗蹿约灰质江览尤筏忙草瞥第5章循环结构第5章循环结构27例如:例如: i=1; for ( ; i100) for (i=1; i100) i+; 狙寞犀湘杨淑羚苯汇撰政逮溺贺唇苟痒蛊萎皖寿毁爽浊安温适耗恳桑也扔第5章循环结构第5章循环结构28例:例:#include main( ) int i ; for(i=0;i1

26、0;i+) putchar(a+i); 运行结果:运行结果:abcdefghij例:例:#include main( ) int i=0; for(;i10;) putchar(a+(i+); 例:例:#include main( ) int i=0; for(;i10;i+) putchar(a+i); 例:例:#include main( ) int i=0; for(;i10;putchar(a+i),i+) ; 臃隐枉摩棵桂鹰伦磺索爷晤狰蔬柱洲径拒窟行址战惑恋渴捉漱挎氓表桂刺第5章循环结构第5章循环结构29说明:说明:l所有用所有用 while 语句实现的循环都可以用语句实现的循环都可

27、以用for 语句实现。语句实现。 等价于:等价于:for(表达式表达式1;表达式表达式2 ;表达式表达式3) 语句;语句;表达式表达式1;while (表达式表达式2) 语句;语句; 表达式表达式3; 轩反悄潜鲸救漫些憨硼清乓骚萌衫抄约巩盅苗祝愚芹霍就旅旭卡肋菩颖牛第5章循环结构第5章循环结构30熟悉几个循环语句熟悉几个循环语句lwhile (!x) x+; 当当当当 x=0x=0 时,执行循环体时,执行循环体时,执行循环体时,执行循环体x+; x+; l lwhile (c=getchar( ) != n) n=n+1; while (c=getchar( ) != n) n=n+1; n

28、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 (n=0; n26; n+) printf(%c , n+A); 作用是作用是作用是

29、作用是输出输出输出输出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以内的奇数和以内的奇数和以内的奇数和以内的奇数和 椎陌芜电顷颜洋闸乌帛义讥援图正翌皿嗣喘淬姐韦邦阂驮秃磁陡蕴黑燥汹第5章循环结构第5章循环结构31几种循环语句的比较几种循环语句的比较lwhile和和do-while语句的语句的表达式表达式只有只有一个一个,for语语句有句有三个三个。lwhile 和和f

30、or先判断先判断循环条件循环条件后执行后执行循环体,循环体,do-while语句语句先执行先执行循环体循环体后判断后判断循环条件。循环条件。whilewhile语句多用于语句多用于语句多用于语句多用于循环次数不定循环次数不定循环次数不定循环次数不定的情况的情况的情况的情况do-whiledo-while语句多用于语句多用于语句多用于语句多用于至少要运行一次至少要运行一次至少要运行一次至少要运行一次的情况的情况的情况的情况forfor语句语句语句语句多用于要多用于要多用于要多用于要赋初值赋初值赋初值赋初值或或或或循环次数固定循环次数固定循环次数固定循环次数固定的情况的情况的情况的情况鞘招能暖织铝

31、桃计勿蛆朋婆蜀胺匿姿卒胺肺阅哨垦昨蓑阜孩柔奏釉堰山史第5章循环结构第5章循环结构325.5 循环结构中的跳转语句循环结构中的跳转语句(P59)l有如下三种语句实现跳转:有如下三种语句实现跳转: break语句语句 continue语句语句在循环语句的循环体中使用,可以进在循环语句的循环体中使用,可以进行循环的流程控制行循环的流程控制寓产刚暂昧邪趾报拥婆嘿泰躺螺倚闲影逮渭急嫂伍掐惠帘蹄蝗究箭龟春牺第5章循环结构第5章循环结构33后续语句后续语句break;break;Y YN N表达式表达式表达式表达式? ?后续语句后续语句break;break;表达式表达式表达式表达式? ?Y YN N5.5

32、.1循环中循环中break的应用的应用l功能:功能: 利用利用break语句能够语句能够强迫终止本循环强迫终止本循环,转到后续语句执行。转到后续语句执行。whilewhile语句语句语句语句do-whiledo-while语句语句语句语句后续语句后续语句计算表达式计算表达式计算表达式计算表达式3 3计算表达式计算表达式计算表达式计算表达式1 1break;break;表达式表达式表达式表达式2?2?Y YN Nforfor语句语句语句语句平弘顶假幽伟样匿淀糕熄雇须碎灿裁缄负托门椰絮什媚卵杉波肝搽琢驹怕第5章循环结构第5章循环结构34 int x,n=0,s=0;while (n5)while

33、(n5) scanf(%d,&x); scanf(%d,&x); if (x0) break;if (x0) break; s+=x; n+; s+=x; n+; printf(“%d”,s);printf(“%d”,s); int x,n=0,s=0; int x,n=0,s=0;dodo scanf(%d,&x); scanf(%d,&x); if (x0) break;if (x0) break; s+=x; n+; s+=x; n+; while (n5); while (n5); for (n=0,s=0; n5; n+ ) for (n=0,s=0; n5; n+ ) scanf(

34、%d,&x); scanf(%d,&x); if (x0) break;if (x0) break; s+=x; s+=x; 杏愁我获诗绑穴埃奶之阐仓爪稿踪堤枣菱屡咨炒垃渍恕仁馁贷叼乱砚皆尧第5章循环结构第5章循环结构35#include main( ) int i, s; for ( i=1; i+ ) s=s+i; if(s5000) break; printf(“s=%d,i=%dn”,s,i);输出结果:输出结果:s=5050,i=100for (i=1; i+) s=s+i s5000 T F 终止终止 循环循环 打印打印s,i值值 【例【例5.9】计算】计算s=1+2+3+i,直到

35、累加到直到累加到s大于大于5000为止,输出为止,输出s和和i的值的值寐卯叠诞沿拿褂抬辛庆迁速帧尔嘱颐拥仑搀倦赠糟旱蹭朔退私虑属冬驯拂第5章循环结构第5章循环结构36后续语句后续语句continue;continue; Y YN N表达式表达式表达式表达式? ?后续语句后续语句continue;continue;表达式表达式表达式表达式? ?Y YN N5.5.2 continue语句及应用语句及应用 l功能:功能: 中断循环体的本次执行(即跳过循环体中尚中断循环体的本次执行(即跳过循环体中尚中断循环体的本次执行(即跳过循环体中尚中断循环体的本次执行(即跳过循环体中尚未执行的语句),未执行的语

36、句),未执行的语句),未执行的语句),立即开始执行下一次循环。立即开始执行下一次循环。立即开始执行下一次循环。立即开始执行下一次循环。whilewhile语句语句语句语句do-whiledo-while语句语句语句语句后续语句后续语句计算表达式计算表达式计算表达式计算表达式3 3计算表达式计算表达式计算表达式计算表达式1 1continue;continue;表达式表达式表达式表达式2?2?Y YN Nforfor语句语句语句语句坍芒铂佐祖虞洱界帐讳非俗桅员潭宙锡撰庭烧闺迈理贯魄放油途迈孩奉圭第5章循环结构第5章循环结构37例例5-5 : int x,n=0,s=0;while (n5)whi

37、le (n5) 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; s+=x; n+;s+=x; n+; while (n5); while (n5); for (n=0,s=0; n5; n+) for (n=0,s=0; n5; n+) scanf(%d,&x); scanf(%d

38、,&x); if (x0) continue;if (x0) continue; s+=x; s+=x; 询硬暗蚌袖闷针幅蟹冉仓一惯曙羡厩其哺榨死亢前卓具叹符各斯假绽撇幢第5章循环结构第5章循环结构38【例【例5.10】#includemain( ) int k=0,s=0,i; for(i=1;i5) printf(“*i=%d,s=%d,k=%dn,i,s,k); continue; k=k+s ; printf( i=%d,s=%d,k=%dn ,i,s,k); 运算结果:运算结果:i=1,s=1,k=1i=2,s=3,k=4*i=3,s=6,k=4*i=4,s=10,k=4*i=5,s

39、=15,k=4晶讯跳伴呕躁邹祸箕次燎篙绊绽戳纬肚续漠针磺厉蚌慧迹敝齿往也个纵食第5章循环结构第5章循环结构395.4. 循环的嵌套循环的嵌套(P57)l如果循环语句的循环体内又包含了另一条如果循环语句的循环体内又包含了另一条循环语句,则称为循环的嵌套循环语句,则称为循环的嵌套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); 外循环语句外循环语句内循环语句内循环语句 for ( j=1; j=i; j+ )printf(%4d,i*j

40、); printf(“n); if(j=i)printf(%4dn,i*j);else printf(%4d,i*j);寂靴透棕筋堰豪雄冀加雨挤其辐默敖扑腔剿纱泞侄乖稿琢拨埂乱弛隆拨创第5章循环结构第5章循环结构40注意:注意:lwhile、do-while、for循环语句可以并列,循环语句可以并列,也可以相互嵌套,但也可以相互嵌套,但要层次清楚,不能出要层次清楚,不能出现交叉。现交叉。l多多重重循循环环程程序序执执行行时时,外外层层循循环环每每执执行行一一次,内层循环都需要循环执行多次。次,内层循环都需要循环执行多次。l例如:例如:for(a=1;a=10;a+) for (b=0;b=5;

41、b+) 外循环外循环外循环外循环执行了执行了执行了执行了1010次,次,次,次,内循环内循环内循环内循环执行执行执行执行6 6次次次次循环正常结束时,内循环执行了循环正常结束时,内循环执行了循环正常结束时,内循环执行了循环正常结束时,内循环执行了106=60106=60次次次次 饵均抹富沾圾楼挎樊肮蔓壹渭巨筛土职舰沛江饼称咖诡丢梦慌洗揣范淘舍第5章循环结构第5章循环结构41【例【例5-24】编程序,输出以下图形。】编程序,输出以下图形。 * * * *一共有一共有一共有一共有4 4 行,每行由空格和星号组成:空格数行,每行由空格和星号组成:空格数行,每行由空格和星号组成:空格数行,每行由空格和

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

43、星号,每次输出一个星号,每次输出一个星号使用使用使用使用双重循环双重循环双重循环双重循环实现实现实现实现思路:思路:思路:思路:蛮志堂匪萧竿油遭币靡喂仓凯酝偏牢狡账厨搓裕伺毒架锻烦鲍源忧罩落俞第5章循环结构第5章循环结构42算法和程序:算法和程序:main( ) int i,j; for (i=1; i=4; i+) for (j=1; j=i-1; 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-1; j+) 输出一个空格输出一个空格 for (j=1

44、; j=8- -(2*i- -1); j+) 输出一个星号输出一个星号 换行换行思考:思考:思考:思考:l l如何输出如何输出如何输出如何输出1010行行行行图形?图形?图形?图形? l l输出图形向右输出图形向右输出图形向右输出图形向右平移平移平移平移2020个字符个字符个字符个字符位置,应如何修改程序?位置,应如何修改程序?位置,应如何修改程序?位置,应如何修改程序? 面聪盘全冷孺凄捆谢绩缘炼缅漆滓匠怠陨奉炽舀侠谋纱绑伪漓喂货办喻瘩第5章循环结构第5章循环结构43思路:素数是指只能被思路:素数是指只能被思路:素数是指只能被思路:素数是指只能被1 1和它本身整除的数,如和它本身整除的数,如和

45、它本身整除的数,如和它本身整除的数,如5 5、7 7、1111、1717、等。等。等。等。 分分别别用用2 2、3 3、,m-1(1m101)m-1(1m101)尝尝试试能能否否整整除除整整数数m m m m。如如如如果果果果mm能能能能被被被被某某某某个个个个数数数数整整整整除除除除,则则则则mm就就就就不不不不是素数。是素数。是素数。是素数。l l这是一种这是一种这是一种这是一种穷举算法穷举算法穷举算法穷举算法l l设被除数为设被除数为设被除数为设被除数为i i,从,从,从,从2 2循环到循环到循环到循环到100100l l设除数为设除数为设除数为设除数为k k,从,从,从,从2 2循环到

46、循环到循环到循环到i-1i-1【例【例5.8】编写程序,找出】编写程序,找出2100以内以内的所有质数(素数)的所有质数(素数)蒙秸卷德杏丈靡逆摇蔫荡许弦瞄蝉凤加开仰函殖寿立射坍姐健栈尚物悸击第5章循环结构第5章循环结构44#include main( ) int k, i, tag; for ( i=2; i=100; i+ ) tag=0; for ( k=2; ki; k+ ) if(i%k=0) tag=1; if (tag=0) printf(“%d, ”,i); 程序:程序:惊贷登扎兔嚣懦筷雨馋铺木全驴瞪掩渔箍脏墙姑贮羹蜕待找寄爵褥劲肇薪第5章循环结构第5章循环结构45l对于对于穷

47、举法穷举法来说,为了提高程序的效率,就来说,为了提高程序的效率,就要减少要减少尝试次数尝试次数。比如在上例中:首先,在外循环中,偶数肯定不是素数,只需判断奇数。其次, 在内循环中,只需判断到不能被 整除即可。程序的优化程序的优化程序优化为:#include math.h“#include main( ) int k, i, tag; printf(“2, ”); for ( i=3; i=100; i+=2 ) tag=0; for ( k=2; tag=0&ksqrt(i); k+ ) if(i%k=0) tag=1; if (tag=0) printf(“%d, ”,i); 挪膘枝哟锋顺靡

48、蹿郡腐镁佳柯酮街据七立著忙村秸摊咖绥甚窟械友蕾介盂第5章循环结构第5章循环结构465.6 循环结构程序举例循环结构程序举例【例【例5.11】 从输入的若干个大于零的从输入的若干个大于零的正整数中选出最大值。用正整数中选出最大值。用-1结束输入。结束输入。思路:1.用第一次循环处理输入的若干负整数,用第一次循环处理输入的若干负整数,2.用第二次循环从输入的正整数中找出最大用第二次循环从输入的正整数中找出最大值值郡娠敞墒骗遍宙蟹洲雷仗乎叶凳聂涂唁愤闹鬃闯礁去巩瘫舌揪索乡醉沾锗第5章循环结构第5章循环结构47 #include main() int x,max; printf(“Enter -1 t

49、o end: n”); do printf(“Enter x : ”); scanf(“%d”,&x); while(x0&xmax) max=x; if(max!=-1) printf(“max=%dn”,max); 当输入以下数据时:当输入以下数据时:25 -6 18 12 -9 45 12 42 -1输出结果如下:输出结果如下: max=45冷愿漂膛熟缅逮混座屠攻钟焙娱黔术亨阳逮钦赂罢漾嘘掳愈仑谅闻讣胡嫌第5章循环结构第5章循环结构48方法方法2:#include void main()int i,max=0; do scanf(%d,&i); if(maxi) max=i; while

50、(i!=-1); printf(%d,max); 底率镀她啦育鼻台陋既恒玲刮靛辖恍峦栏妹搔悯苹淌剂谁邪赡皇蛾愤胡藩第5章循环结构第5章循环结构49【例【例5.3】用迭代法求方程】用迭代法求方程 的根,要求的根,要求误差小于误差小于10-6l l此方程没有解析根,只有通过迭代法求数值根算法:1.x1=0,x2=cosx1.2.判|x2-x1|10-6,若小于则x1=x2,重复执行1,否则执行33.计算结果输出扔闯过铃哗伟柬亦壕锐哑途缨咙熊够斟蠢明泌都睁较葛偷绣履傻徐及盼暂第5章循环结构第5章循环结构50#include #include void main()double x1=0.0,x2=c

51、os(x1); while(fabs(x2-x1)1e-6) x1=x2; x2=cos(x1); printf(“x=%fn”,x2);执行结果:执行结果:X=0.739086程序:椅关擞妨玄嗽骂峙屹官邢性初尼染册考彬黑荡蓖酝拴牺仰贱航忻梳碾靶托第5章循环结构第5章循环结构51【例】:使用双重【例】:使用双重forfor循环打印下面的图形循环打印下面的图形. . * * * * * *#include void main() int k,i,j; for(i=0;i=2;i+) for(k=1;k=i;k+) printf(“ ”); for(j=0;j=3;j+) printf(“*”);

52、 printf(“n”); 幽耪咨仟赂章动朱蛾陛卢舀伏充尔幸耸坷澡痉棋唐流箕信耐栽申乃劲掘障第5章循环结构第5章循环结构52【例】编写程序,求1-3+5-7+-99+101的值#include void main()int i=1,t,sum=1; int s=1; while(i=99) i=i+2; s=-s; t=i/s; sum=sum+t; printf(%d,sum);寥抒诬忧漓崇浪珊霜躁驴犬匈刑苛俞洗症鹤副茅搏卖睛些几之爆醒颖猩皑第5章循环结构第5章循环结构53方法方法2:#include void main()int i,t,sum=0;int s=-1; for(i=1;i=

53、101;i+=2) s=-s; t=i/s; sum=sum+t;printf(%d,sum);郧执嫩矮渝幻盒锁圭式避剔额告衰晶除伐瞻票泊痉疫医悬乍箱奔私编阑令第5章循环结构第5章循环结构54编程练习:编程练习:l l请编写程序统计输入的一行中小写字母的个数。l l输出公元1600年至2000年所有闰年的年号l l请编写输出以下图案的程序,图案的行数由输入的值确定。 A BBB CCCCCl l用一张五角的硬币换5分和1角的硬币(至少各一枚),问有哪几种算法l l教材129页6.2、6.6、6.7、6.8、6.10、6.14镜换驾爪吠诡和闲嘱糟醇幻蒸杰呆坞卧榆恐装煮咏枚倍挠绦炬通征旧济站第5章

54、循环结构第5章循环结构61练习练习1.请编写程序统计输入的一行中小写请编写程序统计输入的一行中小写字母的个数。字母的个数。#include void main() char c; int i=0; while(c=getchar()!=n) if(ca&cz) i+; printf(%d,i);淌层前雌枣偷例鱼椰地犯粒徐趟刚亿罩钎犊闪谰芹靶戍陛撇孤堤埃与逻堵第5章循环结构第5章循环结构62练习练习2:打印闰年:打印闰年#include void main()int i,j=0; for(i=1600;i=2000;i+) if(i%4=0&i%100!=0|i%400=0) printf(%d

55、 ,i); j+; if(j%8=0) printf(n); 椰火匡庞藐厄薯苯佃乐邹咀镰碑琉隅捣误鬼诺矗趟泛铣渍赦嘿颈吴篮吓窜第5章循环结构第5章循环结构63练习练习3:打印图形:打印图形void main() int i,j,k,n; char c=A; scanf(%d,&n); for(i=1;i=n;i+) for(j=1;j=n-i;j+) printf( ); for(k=1;k=2*i-1;k+) putchar(c); putchar(n); c=A+i; A BBB CCCCC匀倘帛忱赋蔓左堪金碉凡糜幼从炕铃鸳盆拍叼木忙灯凤桓怔购龄詹磐庇狰第5章循环结构第5章循环结构64练习练习4:换钱:换钱#include void main()int x,y; for(y=1;y=0) printf(x=%d,y=%dn,x,y); 五兵寇鳃私襟松课考巩酵棉蕊崖堰悬空磺竟罗升郭照跋膝虫魂羌号荚瞎搐第5章循环结构第5章循环结构65

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

最新文档


当前位置:首页 > 资格认证/考试 > 自考

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