C语言程序设计课件(C套)之第六章循环结构的程序设计.ppt

上传人(卖家):晟晟文业 文档编号:4300934 上传时间:2022-11-27 格式:PPT 页数:36 大小:164.50KB
下载 相关 举报
C语言程序设计课件(C套)之第六章循环结构的程序设计.ppt_第1页
第1页 / 共36页
C语言程序设计课件(C套)之第六章循环结构的程序设计.ppt_第2页
第2页 / 共36页
C语言程序设计课件(C套)之第六章循环结构的程序设计.ppt_第3页
第3页 / 共36页
C语言程序设计课件(C套)之第六章循环结构的程序设计.ppt_第4页
第4页 / 共36页
C语言程序设计课件(C套)之第六章循环结构的程序设计.ppt_第5页
第5页 / 共36页
点击查看更多>>
资源描述

1、1共共 32 32页页 第第 2 2 页页上页上页 下页下页节节末页末页结束结束 5 5 6 6循环的基本概念循环的基本概念 当型循环控制语句当型循环控制语句直到型循环控制语句直到型循环控制语句breakbreak语句与语句与continuecontinue语句语句循环的嵌套循环的嵌套应用实例应用实例共共 32 32页页 第第 3 3 页页上页上页 下页下页节节末页末页结束结束6-1 循环的基本概念一、循环问题一、循环问题l提出问题提出问题提问:提问:从键盘上输入从键盘上输入1010个整数并求和,怎么编程?个整数并求和,怎么编程?回答:回答:在程序中写入在程序中写入1010个个scanfsca

2、nf()()语句。语句。提问:提问:从键盘上输入从键盘上输入500500个整数并求和,怎么编程?个整数并求和,怎么编程?换一个角度来看待这些问题换一个角度来看待这些问题 以上问题的实质是:将以上问题的实质是:将scanfscanf函数重复执行函数重复执行N N遍。遍。可以引出一个概念可以引出一个概念“循环循环”,简单而言:,简单而言:循环循环就就是不断是不断反复地执行同一段程序。反复地执行同一段程序。共共 32 32页页 第第 4 4 页页上页上页 下页下页节节末页末页结束结束l if+if+goto goto 循环循环l whilewhile循环循环l forfor循环循环l do_whil

3、edo_while循环循环 先判断后循环先判断后循环 (当型循环)(当型循环)先循环后判断先循环后判断(直到型循环)(直到型循环)特点:特点:C C提供四种循环控制:提供四种循环控制:6-16-1 循环的基本概念循环的基本概念(续续)l循环循环 反复执行同一段程序,直反复执行同一段程序,直到满足一定的条件后才停到满足一定的条件后才停止执行该段程序。止执行该段程序。共共 32 32页页 第第 5 5 页页上页上页 下页下页节节末页末页结束结束二、循环结构二、循环结构当型循环当型循环直到型循环直到型循环条件条件YN循环体循环体循环体循环体N条件条件Y入口入口出口出口6-16-1 循环的基本概念循环

4、的基本概念(完完)出口出口入口入口共共 32 32页页 第第 6 6 页页上页上页 下页下页节节末页末页结束结束6-2 6-2 当型循环控制语句当型循环控制语句一、结构与语句一、结构与语句形式1 1:标号:标号:if(if(条件条件)循环体语句组循环体语句组 goto goto 标号;标号;形式2 2:while(while(条件条件)循环体语句组循环体语句组 形式3 3:for(for(初值初值;条件条件;增量增量)循环体语句组循环体语句组 共共 32 32页页 第第 7 7 页页上页上页 下页下页节节末页末页结束结束6-2 6-2 当型循环控制语句(续)当型循环控制语句(续)1.1.if+

5、if+goto goto 结构结构标号:标号:if(if(条件条件)循环体语句组循环体语句组 goto goto 标号;标号;求:求:s=1+2+3+100main()int i,s;s=0;i=1;xh:if(i=100)s=s+i;i+;goto xh;printf(“s=%dn”,s);共共 32 32页页 第第 8 8 页页上页上页 下页下页节节末页末页结束结束6-2 6-2 当型循环控制语句(续)当型循环控制语句(续)2.2.while while 语句语句 while(while(条件条件)循环体语句组循环体语句组 当条件为真时反复执当条件为真时反复执行循环体,条件为假行循环体,条

6、件为假时退出循环。时退出循环。求:求:s=1+2+3+100main()int i,s;s=0;i=1;while(i=100)s=s+i;i+;printf(“s=%dn”,s);共共 32 32页页 第第 9 9 页页上页上页 下页下页节节末页末页结束结束6-2 6-2 当型循环控制语句(续)当型循环控制语句(续)lwhilewhile使用使用注意注意 1.1.while(while(0 0).).由于循环的条件表达式恒等由于循环的条件表达式恒等于于0 0,循环体永远也不会执行,是编程者的,循环体永远也不会执行,是编程者的错误错误。2.2.while(while(1 1).).由于循环的条

7、件表达式恒等由于循环的条件表达式恒等于于1 1,所以不可能通过循环控制条件来结束循环体的执,所以不可能通过循环控制条件来结束循环体的执行,称为行,称为“死循环死循环”。3.3.为了保证循环正常运行,应该特别注意:为了保证循环正常运行,应该特别注意:循环控制条件循环控制条件 控制条件的初始状态(初始值)控制条件的初始状态(初始值)循环体内部对控制条件的影响循环体内部对控制条件的影响共共 32 32页页 第第 1010 页页上页上页 下页下页节节末页末页结束结束6-2 6-2 当型循环控制语句(续)当型循环控制语句(续)3.3.for for 语句语句执行流程:执行流程:计算计算e1e1初值初值;

8、计算计算e2e2并判断,非并判断,非0 0,执行循环;否则跳出循环;,执行循环;否则跳出循环;当当e2e2非非0 0时,执行循环体,然后计算时,执行循环体,然后计算e3e3增量增量;自动转到第二步继续执行。自动转到第二步继续执行。共共 32 32页页 第第 1111 页页上页上页 下页下页节节末页末页结束结束6-26-2 当型循环控制语句(续)当型循环控制语句(续)求:求:s=1+2+3+100main()int i,s;s=0;for(i=1;i=100;i+)s=s+i;printf(“s=%dn”,s);for循环执行流程:循环执行流程:i=1i=1i=100i=100 s=0+1=1

9、s=0+1=1i+i+i=2 i=2i=100i100i100 退出循环退出循环共共 32 32页页 第第 1212 页页上页上页 下页下页节节末页末页结束结束 e1e1、e2e2、e3e3均可缺省,但均可缺省,但分号始终不能缺省!分号始终不能缺省!for(;i=100;i+)for(;i=100;i+)缺省缺省e1e1,i,i应在循环之前赋初值应在循环之前赋初值 6-2 6-2 当型循环控制语句(续)当型循环控制语句(续)关于关于forfor语句语句i=1;/i=1;/*循环前补偿缺省的循环前补偿缺省的e1e1 */for(for(;i=100;i+);i100)break;/if(i100

10、)break;/*补偿补偿e2e2循环控制功能。循环控制功能。breakbreak语句的功能是退出语句的功能是退出 它所在的循环它所在的循环*/s=s+i;s=s+i;共共 32 32页页 第第 1414 页页上页上页 下页下页节节末页末页结束结束for(;)for(;)缺省缺省e1,e2,e3e1,e2,e3 死循环!死循环!在循环前补偿在循环前补偿e1,e1,在循环体补偿在循环体补偿e2e2和和e3e3功能。功能。6-2 6-2 当型循环控制语句(续)当型循环控制语句(续)i=1;/i=1;/*补偿补偿e1 e1*/for(;)for(;)if(i100)break;/if(i100)br

11、eak;/*补偿补偿e2e2循环控制功能循环控制功能*/s=s+i;s=s+i;i+;/i+;/*补偿补偿e3e3功能功能 */共共 32 32页页 第第 1515 页页上页上页 下页下页节节末页末页结束结束6-2 6-2 当型循环控制语句(续)当型循环控制语句(续)for(;n100;)for(;n100;)缺省缺省e1,e3e1,e3在循环前补偿在循环前补偿e1,e1,在循环体补偿在循环体补偿e3e3功能。功能。i=1;/i=1;/*补偿补偿e1e1功能功能 */for(;i=100;)for(;i=100;)s=s+i;s=s+i;i+;/i+;/*补偿补偿e3e3功能功能 */共共 3

12、2 32页页 第第 1616 页页上页上页 下页下页节节末页末页结束结束e1e1和和e3e3可以是与初值、增量无关的逗号表达式可以是与初值、增量无关的逗号表达式s=0;s=0;for(i=1;i=100;i+)for(i=1;i=100;i+)s=s+i;s=s+i;6-2 6-2 当型循环控制语句(续)当型循环控制语句(续)for(for(s=0,s=0,i=1;i=100;i=1;i=100;s=s+i,s=s+i,i+);i+);共共 32 32页页 第第 1717 页页上页上页 下页下页节节末页末页结束结束6-2 6-2 当型循环控制语句(续)当型循环控制语句(续)lforfor语句的

13、变化形式语句的变化形式forfor语句中的三个表达式中的任意一个都是可以省略的,但是分号不语句中的三个表达式中的任意一个都是可以省略的,但是分号不能省略。能省略。1.1.省略表达式省略表达式2 2,则:,则:forfor(表达式表达式1 1;表达式;表达式3 3)就形成了一个死循环。就形成了一个死循环。2.2.省略表达式省略表达式1 1和表达式和表达式3 3,则:,则:forfor(;(;表达式表达式2 2;);)就等同于:就等同于:whilewhile(表达式表达式 )据此结论:所有用据此结论:所有用whilewhile语句语句实现的循环都可以用实现的循环都可以用forfor语句语句实现。实

14、现。3.3.表达式表达式1 1、2 2、3 3全省略全省略,则:,则:forfor (;)(;)就等同于:就等同于:whilewhile (1)(1)共共 32 32页页 第第 1818 页页上页上页 下页下页节节末页末页结束结束main()main()intint n,s;n,s;for(n=1;n=10;n+=2)for(n=1;n=10;n+=2)printfprintf(n=%dn,n);(n=%dn,n);main()main()intint n,s;n,s;for(n=1;n=6;n+=2)for(n=1;n=6;n+=2);printfprintf(n=%dn,n);(n=%dn

15、,n);以下程序的输出结果?以下程序的输出结果?输出结果:输出结果:n=7n=7输出结果:输出结果:n=1 n=1 n=3 n=3 n=5 n=5 n=7 n=7 n=9 n=96-2 6-2 当型循环控制语句(完)当型循环控制语句(完)循环体循环体共共 32 32页页 第第 1919 页页上页上页 下页下页节节末页末页结束结束6-3 6-3 直到型循环控制语句直到型循环控制语句一、一、do_while 语句语句do do 循环体语句组循环体语句组 while(while(条件条件);求:求:s=1+2+3+100main()main()intint i,s;i,s;s=0;i=1;s=0;i

16、=1;dodos=s+i;s=s+i;i+;i+;while(i=100);while(i=100);printfprintf(“s=%dn”,s)(“s=%dn”,s);首先首先执行循环体,执行循环体,然后然后检检测条件测条件,当条件为真时反复当条件为真时反复执行循环体,执行循环体,直到直到条件为条件为假时退出循环。假时退出循环。共共 32 32页页 第第 2020 页页上页上页 下页下页节节末页末页结束结束二、二、whilewhile与与do_whiledo_while的比较的比较6-3 6-3 直到型循环控制语句直到型循环控制语句(续续)ldo-whiledo-while与与whilew

17、hile和和forfor的最大区别:的最大区别:do-whiledo-while语句语句先执行循环体先执行循环体然后然后再判断再判断循环循环控制条件控制条件,而而whilewhile和和forfor却是先判断条件之后再执行循环体。却是先判断条件之后再执行循环体。使用使用do-whiledo-while构成的循环,循环体部分构成的循环,循环体部分至少要执行一次至少要执行一次;而采用而采用whilewhile和和forfor构成的循环,循环体部分有可能一次构成的循环,循环体部分有可能一次也不会执行。也不会执行。共共 32 32页页 第第 2121 页页上页上页 下页下页节节末页末页结束结束main

18、()main()intint s=0,x;s=0,x;scanfscanf(%d,&x);(%d,&x);while(x=10)while(x=10)s=s+xs=s+x;x+;x+;printfprintf(s=%dn,s);(s=%dn,s);main()main()intint s=0,x;s=0,x;scanfscanf(%d,&x);(%d,&x);dodo s=s+x;s=s+x;x+;x+;while(x=10);while(x=10);printfprintf(s=%dn,s);(s=%dn,s);输入:输入:1212输出:输出:s=12s=12循环至少循环至少执行一次执行一次

19、循环没有循环没有被执行被执行输入:输入:1212输出:输出:s=0s=0二、二、whilewhile与与do_whiledo_while的比较的比较6-3 6-3 直到型循环控制语句直到型循环控制语句(续续)共共 32 32页页 第第 2222 页页上页上页 下页下页节节末页末页结束结束lbreak语句格式语句格式它可以出现在它可以出现在switchswitch语句或循环语句的循环体中语句或循环语句的循环体中。6-4 6-4 breakbreak语句与语句与continuecontinue语句语句一、一、breakbreak语句语句结束它所在的结束它所在的 switchswitch语句或循环语

20、句的执行。语句或循环语句的执行。功能功能:共共 32 32页页 第第 2323 页页上页上页 下页下页节节末页末页结束结束表达式表达式2?2?成立成立不成立执行后续语句执行后续语句执行表达式执行表达式3 3执行表达式执行表达式1 1lbreak语句的执行流程语句的执行流程表达式表达式?成立成立不成立不成立执行后续语句执行后续语句breakbreak表达式表达式?成立成立不成立不成立执行后续语句执行后续语句breakwhile语句语句for语句语句do-while语句语句6-4 6-4 breakbreak语句与语句与continuecontinue语句(续)语句(续)共共 32 32页页 第第

21、 2424 页页上页上页 下页下页节节末页末页结束结束lbreakbreak语句使用注意:语句使用注意:1 1、在嵌套循环中,、在嵌套循环中,breakbreak语句仅能退出一层语句仅能退出一层(当当前前)循环。循环。2 2、若在循环语句中包含了、若在循环语句中包含了switchswitch语句,那么语句,那么switchswitch语句中的语句中的breakbreak语句仅能使控制退出语句仅能使控制退出switchswitch语句。语句。3 3、breakbreak语句并不是程序设计中必不可少的语句,语句并不是程序设计中必不可少的语句,可以通过改变程序的结构去掉。可以通过改变程序的结构去掉。

22、6-4 6-4 breakbreak语句与语句与continuecontinue语句(续)语句(续)共共 32 32页页 第第 2525 页页上页上页 下页下页节节末页末页结束结束lcontinue语句格式语句格式它它只能只能出现在循环语句的循环体中。出现在循环语句的循环体中。6-4 6-4 breakbreak语句与语句与continuecontinue语句(续)语句(续)结束本次循环,开始下一次循环的执行。结束本次循环,开始下一次循环的执行。功能功能:二、二、continuecontinue语句语句共共 32 32页页 第第 2626 页页上页上页 下页下页节节末页末页结束结束lconti

23、nue语句的执行流程语句的执行流程表达式表达式2?2?continue成立成立不成立不成立执行后续语句执行后续语句执行表达式执行表达式3 3执行表达式执行表达式1 1表达式表达式?continue成立成立不成立不成立执行后续语句执行后续语句表达式表达式?continue成立成立不成立不成立执行后续语句执行后续语句6-4 6-4 breakbreak语句与语句与continuecontinue语句(续)语句(续)while语句语句for语句语句do-while语句语句共共 32 32页页 第第 2727 页页上页上页 下页下页节节末页末页结束结束6-4 6-4 breakbreak语句与语句与c

24、ontinuecontinue语句(续)语句(续)breakbreak语句语句 与与continuecontinue语句的区别语句的区别main()/*输出输出1010到到1515之间不能被之间不能被3 3整除的数整除的数*/intint k;k;for(k=10;k=15;k+)for(k=10;k=15;k+)if(k%3=0)continue;(if(k%3=0)continue;(或或break;break;)else else printfprintf(“%4d”,k);(“%4d”,k);用用continuecontinue时时,输出:输出:10 11 13 1410 11 13

25、14用break时,输出:10 11循环体中循环体中breakbreak语句语句结束整个循环结束整个循环的执行,而的执行,而continuecontinue语句语句只结束本次循环只结束本次循环,并开始下一次循环。,并开始下一次循环。共共 32 32页页 第第 2828 页页上页上页 下页下页节节末页末页结束结束6-5 6-5 循环的嵌套循环的嵌套 循环嵌套的概念循环嵌套的概念 main()int j,k;for(j=1;j=4;j+)/*外循环外循环*/for(k=j;k=j+4;k+)/*内循环内循环*/printf(“%2d”,k);printf(“n”);在循环体中,又包含在循环体中,又

26、包含另一循环结构。构成另一循环结构。构成循环嵌套。循环嵌套。输出由数字组输出由数字组成的矩形:成的矩形:12345 23456 34567 45678共共 32 32页页 第第 2929 页页上页上页 下页下页节节末页末页结束结束lC C语言提供了三种循环语句:语言提供了三种循环语句:forfor、whilewhile、do-whiledo-while。特点特点如下:如下:1 1、forfor和和whilewhile先先判断判断循环条件循环条件后执行后执行循环体,循环体,do-whiledo-while语语句句先先执行执行循环体循环体后判断后判断循环条件。循环条件。2 2、whilewhile

27、和和do-whiledo-while语句的条件表达式只有一个,语句的条件表达式只有一个,forfor语句语句有有3 3个。个。3 3、whilewhile、do-whiledo-while、forfor可以相互替换使用。可以相互替换使用。4 4、whilewhile语句多用于不需要赋初值的或循环次数不定的情况。语句多用于不需要赋初值的或循环次数不定的情况。forfor语句多用于要赋初值或循环次数固定的情况。语句多用于要赋初值或循环次数固定的情况。do-whiledo-while语句多用于至少要运行一次的循环控制。语句多用于至少要运行一次的循环控制。5 5、循环语句可以嵌套,循环可以并列,但不能

28、交叉。循环语句可以嵌套,循环可以并列,但不能交叉。共共 32 32页页 第第 3030 页页上页上页 下页下页节节末页末页结束结束l为了保证循环体正常运行,应该特别注意:为了保证循环体正常运行,应该特别注意:循环控制条件循环控制条件 控制条件的初始状态(初始值)控制条件的初始状态(初始值)循环体内部对控制条件的影响循环体内部对控制条件的影响以上三个方面相互配合,相互影响,共同完成循以上三个方面相互配合,相互影响,共同完成循环控制环控制共共 32 32页页 第第 3131 页页上页上页 下页下页节节末页末页结束结束/*s=1+3+5+.+99 s=1+3+5+.+99*/main()main()

29、int int i i;long slong s;s=s=0 0;for(i=1;i=99;i+=2)for(i=1;i=99;i+=2)s=s s=s+i;i;printfprintf(“%ldn”,s);(“%ldn”,s);/*s=8!s=8!*/main()main()int int i i;long slong s;s=s=1 1;for(i=1;i=8;i+)for(i=1;i=8;i+)s=s s=s*i;i;printfprintf(“%ldn”,s);(“%ldn”,s);6-5 6-5 应用实例(累加、连乘)应用实例(累加、连乘)共共 32 32页页 第第 3232 页页上

30、页上页 下页下页节节末页末页结束结束6-5 6-5 应用实例(续)应用实例(续)例例6-6 6-6 在在3 3位数中找一个满足下列要求的正整数位数中找一个满足下列要求的正整数n n:其各位数字的立方恰好等于它本身。其各位数字的立方恰好等于它本身。如:如:371=3371=33 3+7+73 3+1+13 3数字拆分:数字拆分:百位数字:百位数字:n/100n/100十位数字:十位数字:n/10%10n/10%10个位数字:个位数字:n%10n%10共共 32 32页页 第第 3333 页页上页上页 下页下页节节末页末页结束结束main()main()long f1,f2,f;long f1,f

31、2,f;int int i;i;f1=f2=1;f1=f2=1;printfprintf(%10ld%10ld,f1,f2);(%10ld%10ld,f1,f2);for(i=3;i=20;i+)for(i=3;i=x1-x0|=epseps时,表示近似值的精度不够,当时,表示近似值的精度不够,当|x1-x1-x0|x0|epseps时,则时,则x1x1就为就为a a的平方根。的平方根。6-5 6-5 应用实例(迭代)应用实例(迭代)共共 32 32页页 第第 3535 页页上页上页 下页下页节节末页末页结束结束main()main()intint i,j,k,l,n=0;i,j,k,l,n=

32、0;for(i=1;i10;i+)for(i=1;i10;i+)for(j=1;j10;j+)for(j=1;j10;j+)for(k=1;k10;k+)for(k=1;k10;k+)for(l=1;l10;l+)for(l=1;l10;l+)if(i=j|i=k|i=l if(i=j|i=k|i=l|j=k|j=l|k=l)continue;|j=k|j=l|k=l)continue;if(i+j+k+l!=12)continue;if(i+j+k+l!=12)continue;printfprintf(“%d,%d,%d,%d”,i,j,k,l);(“%d,%d,%d,%d”,i,j,k,

33、l);n+;if(n%6=0)n+;if(n%6=0)printfprintf(“n”);/(“n”);/*每行每行6 6个排列个排列*/例例6-14 6-14 从从1 1到到9 9中选出中选出4 4个互不相同的数构成排列个互不相同的数构成排列,并使并使它们的和等于它们的和等于12,12,输出所有这样的排列。如输出所有这样的排列。如1,2,3,61,2,3,6循环循环94次次判断判断8*94=52488次次共共 32 32页页 第第 3636 页页上页上页 下页下页节节末页末页结束结束l本章介绍的本章介绍的3 3种循环语句可以实现同一问题的求解,但种循环语句可以实现同一问题的求解,但它们各有特

34、点。它们各有特点。whilewhile、forfor语句属于语句属于“先判断,后执行先判断,后执行循环循环”,而,而do_whiledo_while语句则语句则“先执行循环,后判断先执行循环,后判断”。lifif和和gotogoto语句虽然能构造循环结构,但效率不如循环语语句虽然能构造循环结构,但效率不如循环语句,而且句,而且gotogoto语句会破坏结构化程序,通常不采用该方语句会破坏结构化程序,通常不采用该方法实现循环结构。法实现循环结构。lbreakbreak和和continuecontinue语句能改变循环的执行流程,它们的语句能改变循环的执行流程,它们的区别在于:区别在于:breakbreak语句终止整个循环的执行,而语句终止整个循环的执行,而continuecontinue语句只结束本次循环,并开始下一次循环;语句只结束本次循环,并开始下一次循环;breakbreak语句还可以出现在语句还可以出现在switchswitch语句中,而语句中,而continuecontinue语语句只能出现在循环体中。句只能出现在循环体中。l本章还介绍了累加、连乘、迭代和穷举等基本算法本章还介绍了累加、连乘、迭代和穷举等基本算法。

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

当前位置:首页 > 办公、行业 > 各类PPT课件(模板)
版权提示 | 免责声明

1,本文(C语言程序设计课件(C套)之第六章循环结构的程序设计.ppt)为本站会员(晟晟文业)主动上传,163文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。
2,用户下载本文档,所消耗的文币(积分)将全额增加到上传者的账号。
3, 若此文所含内容侵犯了您的版权或隐私,请立即通知163文库(发送邮件至3464097650@qq.com或直接QQ联系客服),我们立即给予删除!


侵权处理QQ:3464097650--上传资料QQ:3464097650

【声明】本站为“文档C2C交易模式”,即用户上传的文档直接卖给(下载)用户,本站只是网络空间服务平台,本站所有原创文档下载所得归上传人所有,如您发现上传作品侵犯了您的版权,请立刻联系我们并提供证据,我们将在3个工作日内予以改正。


163文库-Www.163Wenku.Com |网站地图|