C语言程序设计-电子教案-朱建芳 第05章

上传人:E**** 文档编号:89392157 上传时间:2019-05-24 格式:PPT 页数:44 大小:226.01KB
返回 下载 相关 举报
C语言程序设计-电子教案-朱建芳 第05章_第1页
第1页 / 共44页
C语言程序设计-电子教案-朱建芳 第05章_第2页
第2页 / 共44页
C语言程序设计-电子教案-朱建芳 第05章_第3页
第3页 / 共44页
C语言程序设计-电子教案-朱建芳 第05章_第4页
第4页 / 共44页
C语言程序设计-电子教案-朱建芳 第05章_第5页
第5页 / 共44页
点击查看更多>>
资源描述

《C语言程序设计-电子教案-朱建芳 第05章》由会员分享,可在线阅读,更多相关《C语言程序设计-电子教案-朱建芳 第05章(44页珍藏版)》请在金锄头文库上搜索。

1、第5章 循环结构的C程序设计,本章学习目标 了解循环概念和循环执行过程 了解用goto语句构成循环结构的方法 掌握while和do-while语句的使用方法 熟练掌握for语句的使用方法 掌握break和continue语句的使用方法 掌握循环嵌套的使用方法 掌握循环结构程序设计的方法,Return,概述,现实生活中有许多需要重复进行的操作,它们的处理方法相同,只是每次的数据可能发生变化。例如100个数的累加和累乘,就要做100次相加和相乘的操作,每次运算的形式一样,只是相加、相乘的数不同而已。程序中对这类需要重复执行的操作一般使用循环结构来处理。循环控制结构常用于解决数学迭代、对象遍历等问题

2、,几乎所有实用程序都包含循环结构。 循环结构也是结构化程序设计中的三种基本结构之一。C语言提供了多种解决循环操作的语句,有goto语句、while语句、do-while语句和for语句,另外,还提供了break语句和continue语句,用于循环的灵活控制。,5.1 循环语句 5.2 break语句与continue语句 5.3 循环的嵌套 5.4 几种循环语句的比较 5.5 循环结构的C程序设计举例,1.一般格式:goto 语句标号; 如:goto loop; 注:“语句标号”是一个标识符,可作为无条件转向语句goto的目标。语句标号的命名规则与变量名的命名相同,其第一个字符必须为字母或下划

3、线,如:loop、a1、_abc等。在程序中语句标号可以和变量同名。 2.功能 当程序执行到goto语句时,就无条件转到语句标号所在的位置继续执行程序。 3.特点 使程序无条件转向,与if语句一起构成循环(否则构成的是死循环,要通过强制中断才能结束程序的运行),仅当if语句的条件不成立时结束循环。,5.1.1 goto语句,4.说明 (1) goto语句和其所转向的语句标号必须在同一个函数体中; (2) goto语句常用于在多层循环的内层跳到外层。若从循环体中跳到循环外,C语言一般用break语句和continue语句(在5.5中介绍)跳出本层循环和结束本次循环。 (3) goto语句不符合结

4、构化程序设计准则,因为无条件转向使程序结构无规律、可读性差。一般应避免使用goto语句,但如果能大大提高程序的执行效率,也可以使用。,/*exam5_1*/ main(void) int i=1; /*变量i用于统计求积的次数*/ long int s=1;/*用于存储积的变量s先清1*/ loop:if(i=10) s=s*i;i=i+1; goto loop; else printf(“S= %ld”,s); ,loop为语句标号。,【例5-1】 用goto语句编程,求S=10!的值。,【提示】引入整型变量i表示求10的阶乘中的“乘数”,另用一长整型变量s(因考虑s的最终结果会超过普通整型

5、数据的取值范围,故s变量采用长整型。)表示求10的阶乘中的“积”,在条件i=10时,实现相乘运算,否则,结束此乘法运算,输出所求的积(即变量s的值),结束程序的执行。,该语句部分称为循环体,当需要执行多条语句时,应使用复合语句。,S=3628800,运行结果为:,【例5-2】 用if语句和goto语句构成循环,求 。,/*exam5_2*/ main(void) int sum = 0; /*用于存储和的变量sum先清零*/ int i = 1; /*变量i用于统计求和的次数*/ loop: if(i = 100) sum = sum + i; /*累加*/ i+; goto loop; pr

6、intf(“sum=%d“,sum); ,sum=5050,运行结果为:,该复合语句部分为循环体。,循环体内一定要有改变循环变量的语句。,Return,5.1.2 while语句,While循环是一种“当型”循环,循环条件在循环结构的开头部分。 1.一般格式 while(表达式) 循环体语句 如:while(i=10) s=s+i;i=i+1; 这里,变量i称为“循环变量”简称为“循变”,循环条件由循变i设定。当循环体语句仅由一条语句构成时,可以不使用复合语句形式。 2.功能 当表达式的值为真时,执行while语句中内嵌的循环体语句,否则,执行while语句中的下一条语句。程序执行过程如图5-

7、3所示。,为循环体,3特点:先判断表达式的值,后执行循环体语句。,【例5-3】 用while语句编程,求S=10!(即:S=1*2*3*4*5*6*7*8*9*10)的值。,/*exam5_3*/ main(void) int i=1; /*定义并初始化循环控制变量*/ long int s=1; /*定义并初始化累乘器*/ while(i=10) /*循环继续条件:i=10*/ s=s*i;i+; /*累乘,循变i增1值*/ printf(“S=%ld”,s); /*输出累乘结果*/ ,为循环体,S=3628800,运行结果为:,循环体内一定要有改变循环变量的语句。,【例5-4】 用whil

8、e语句编程,求 的值。,/*exam5_4*/ main(void) int i=1; /*定义循环变量i,并初始化为1*/ int sum=0; /*将累加器sum初始化为0*/ while(i=100) sum=sum+i; /*实现累加*/ i+; /*循环变量增1*/ printf(“sum=%d”,sum); ,sum=5050,运行结果为:,循环体内一定要有改变循环变量的语句。,Return,5.1.3 do-while语句,do-while循环是一种“直到型”循环,循环条件在循环结构的结束部分。 1一般格式 do 循环体语句 while(表达式) ;,“while (表达式);”

9、中的分号不能少。,如: do s=s+i;i=i+1; while(i=10);,2功能 先执行一次指定的循环体语句,然后判别表达式,当表达式的值为真时,返回重新执行循环体语句,如此反复,直到表达式的值为假止,循环结束。程序执行过程如图5-4所示。,为循环体,3特点: 先执行一次循环体语句,后判断循环条件是否成立,当循环条件表达式为真时,再执行循环体语句,直到循环条件表达式为假时,循环结束。,图5-3 do-while语句的流程图,【例5-5】 用do-while语句编程,求S=10!(即:S=1*2*3*4*5*6*7*8*9*10)的值。,/*exam5_5*/ main(void) in

10、t i=1; long int s=1; do s=s*i;i+; while(i=10); printf(“S=%ld”,s); ,为循环体,循环体内一定要有改变循环变量的语句。,循环继续条件,S=3628800,运行结果为:,while循环与do-while循环的比较,同一个问题,既可以用while循环处理,也可以用do-while循环处理。 在一般情况下,用while和do-while语句解决同一问题时,若二者的循环体部分是一样的,它们的结果也一样。但是当while后面的“表达式”一开始就为“假”时,两种循环的结果不同。这是因为此时while循环的循环体不被执行,而do-while循环的

11、循环体被执行一次。 要区分循环体语句的执行次数。,“比较”示例,【例5-6】 求i+(i+1)+(i+2)+(i+10),其中,i由键盘输入。(用while和do-while两种语句分别编写程序)。,说明:两种方法中用到的循环体是一样的,且循环体的执行次数均为10次。不同的是所用的循环语句不同。特别强调:do-while循环中的while语句后的分号不能少。,Return,如: for(i=1;i=100;i+) sum =sum + i; 等价于以下while语句: i=1; while(i= 100) sum=sum+i; i+; ,5.1.4 for语句,在循环语句中,for语句最为灵活

12、,不仅可用于循环次数已经确定的情况,也可用于循环次数虽不确定、但给出了循环继续条件的情况。 1一般格式 for (表达式1;表达式2;表达式3) 循环体语句,表达式1为初始化循环变量的赋值表达式;表达式2为判断循环继续的条件是否成立的逻辑表达式 ;表达式3为改变循环变量(增值或减值)的表达式。,执行过程示图,图5-4 for语句的流程图,3功能 先执行表达式1,然后判别表达式2,当表达式2的值为真时,执行循环体语句及表达式3;否则,执行for语句中的下一条语句。程序执行过程如图5-7所示:,4特点: 是最灵活的循环语句。先确定循环变量的初值(表达式1),判断条件的值(表达式2),后执行循环体语

13、句,再更新循环变量的值。,【例5-7】 用for语句编程,求S=10!(即:S=1*2*3*4*5*6*7*8*9*10)的值。,/*exam5_7*/ main(void) int i; /*定义循环变量类型*/ long int s=1;/*定义累乘器变量类型,并将累乘器s初始化为1*/ for(i=1;i=10;i+) s=s*i; printf(“S=%ld”,s); ,为循环体,表达式3改变循环变量i的值。,循环继续条件,说明: (1) for语句中的“表达式1”可省略。,“表达式1”的作用是设定循环初始条件,“表达式1”省略后 应在for语句前面设置循环初始条件。如: i=1; f

14、or(;i=10;i+) s=s*i;,(2)for语句中“表达式2”一般不能省略。 如果省略“表达式2”,则不判别循环条件,认为循环条件始终为“真”,循环将无终止地进行下去。如:,for(i=1; ;i+) sum = sum + i;,等价,i = 1; while (1) sum = sum + i;i+;,省略表达式1后,应在for语句前给循环变量赋初值。,(3)表达式3可省略,但程序必须在循环体语句中设置循环变量增值,来修改循环条件,以确保循环能正常结束。如: for(sum=0, i=1;i=100; ) sum = sum + i; i+; ,省略表达式3后,在循环体内改变循环变

15、量i的值。,(4)可省略“表达式1”和“表达式3”,只有“表达式2”。如:,i=1; for( ;i=100;) sum = sum + i; i+;,i=1; while ( i=100 ) sum = sum + i; i+;,等价,(5)“表达式1”、“表达式2”、“表达式3”均省略,是一种简单的死循环形式。如:,for( ; ;) 循环体语句,while(1) 循环体语句,等价,【例5-8】 观察此程序,写出程序的运行结果。 /*exam5_8*/ main(void) int i, s,j=10; for(s=0,i=1;i=10;i+,j-) s=i+j; printf( “S=%

16、d”,s ); ,程序的运行结果为:,S=11,第1步,第2步,第4步,第3步,第5步,想一想:若把i=10改为i=100结果会是什么?若把j=10改为j=100呢?,Return,5.2 break语句和continue语句,为了使循环控制更加灵活,语言提供了break语句和continue语句。,5.2.1 break语句 1. 一般格式 break; 2. 功能 强行结束循环,转向执行循环语句的下一条语句。常用于跳出所在的while、do-while、for循环语句,提前结束循环;也可用于跳出所在的多分支switch语句。,程序举例,【例5-9】 求面积不大于100,半径分别为1、2、3的圆的面积。,/*exam5_9*/ main(void)

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 高等教育 > 大学课件

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