C语言程序设计 教学课件 ppt 作者 任文 孔庆彦 电子教案(第1章--第6章) 第5章

上传人:E**** 文档编号:89190841 上传时间:2019-05-21 格式:PPT 页数:45 大小:1.21MB
返回 下载 相关 举报
C语言程序设计 教学课件 ppt 作者 任文 孔庆彦 电子教案(第1章--第6章) 第5章_第1页
第1页 / 共45页
C语言程序设计 教学课件 ppt 作者 任文 孔庆彦 电子教案(第1章--第6章) 第5章_第2页
第2页 / 共45页
C语言程序设计 教学课件 ppt 作者 任文 孔庆彦 电子教案(第1章--第6章) 第5章_第3页
第3页 / 共45页
C语言程序设计 教学课件 ppt 作者 任文 孔庆彦 电子教案(第1章--第6章) 第5章_第4页
第4页 / 共45页
C语言程序设计 教学课件 ppt 作者 任文 孔庆彦 电子教案(第1章--第6章) 第5章_第5页
第5页 / 共45页
点击查看更多>>
资源描述

《C语言程序设计 教学课件 ppt 作者 任文 孔庆彦 电子教案(第1章--第6章) 第5章》由会员分享,可在线阅读,更多相关《C语言程序设计 教学课件 ppt 作者 任文 孔庆彦 电子教案(第1章--第6章) 第5章(45页珍藏版)》请在金锄头文库上搜索。

1、http:/,本章目录,第5章 循环结构程序设计 5.1 while语句 5.2 do-while语句 5.3 for语句 5.4 break、continue和goto语句 5.5 循环的嵌套 5.6 几种循环的比较 5.7 程序举例 本章小结 习题,第5章 循环结构程序设计,学习目标:,返回目录,正确理解循环语句的主要作用和用途。 熟练掌握由while语句、do-while语句和for语句实现的 循环结构。 能够熟练的设计循环结构和分清各个循环语句的区别。 熟悉goto构成的循环结构,了解break和continue语句。,在C语言中可以用以下语句来实现循环: 用while语句; 用do-

2、while语句; 用for语句; goto语句和if语句构成循环;,第5章 循环结构程序设计,5.1 while语句,5.1.1 while 语句的一般形式 5.1.2 while 语句的执行 5.1.3 程序举例,5.1.1 while 语句的一般形式,while 语句用来实现“当型”循环结构。while 语句一般形式如下: while(表达式)语句 其中:“表达式”是循环能否继续重复的条件,“语句”即是循环体部分,其可以是单个语句,也可以是由多个语句构成的复合语句,还可以是空语句。例如: while (i8 ) s=s+i; 在上面的while 语句中,表达式是“i8”,语句即循环体部分是

3、“s=s+i;”。,5.1.2 while 语句的执行,while 语句的执行是这样的,首先计算表达式的值,若其值为非0(真),则执行循环体并重新计算表达式的值,直到表达式的值变为0(假)为止,这时退出while语句,循环结束。然后去执行该while语句的下一条语句。其特点是:先判断表达式(循环条件),后执行语句(循环体),故循环体有可能一次也不被执行。while 语句的执行流程如图5-1所示。,5.1.3 程序举例,【例5-1】 求,分别用传统流程图和N-S结构流程图表示算法,见图5-3(a)和图5-3(b)。,源程序如下: main() int i,sum=0; i=1; while (i

4、=50) sum=sum+i; i=i+1; printf(“%d“,sum); ,需要注意:,(1)循环体中如果包含了一个以上的语句,应该用花括弧括起来,以复合语句形式出现。如果不加花括弧,则while语句的范围只到while后面第一个分号处。例如,本例中的while语句为: while (i=50) sum=sum+i; i+; 其中的while 语句的循环体为sum=sum+ i 和i+两个语句组成,如果没有外面的大括弧,则while语句范围只到“sum=sum+i;”既循环体部分就只有一个语句了。,5.2 do-while语句,do-while 语句用来实现“直到型”循环结构。do-w

5、hile 语句一般形式如下: do 语句 while(表达式); 例如: do s=s+i ; while (i 10) 其中,语句(循环体)是“s=s+i ;”,表达式(循环条件)是“i10” 。,5.2.2 do-while 语句的执行,do-while语句的执行过程如下: 首先执行循环体中的语句,开始第一次循环周期; 计算表达式中的值,如果表达式值为非0(真),重新返回到第(1)步,开始下一个循环周期(即再执行循环体一次);如果表达式的值为0(假),则转到第(3)步; 结束do-while循环,执行该循环的后续语句。 do-while语句的特点是:先执行语句(循环体),后判断表达式(循环

6、条件),故循环体至少被执行一次。其执行流程图见图5-4。,5.2.3 程序举例,图5-5(a) 图5-5(b),【例5-2】 用do-while语句改写例5.1。 先分别画出流程图和N-S结构流程图表示算法,见图5-5(a)和图5-5(b)。,【例5-3】while和do-while的循环的比较。,(1) main() int sum=0,i; scanf (“%d“, 运行结果如下: 1 55,(2) main() int sum=0,i; scanf (“%d“, 运行结果如下: 1 55,5.3 for语句,C语言中的for语句使用最为灵活,不仅可以用于循环次数已经确定的情况,而且可以用

7、于循环次数不确定而只给出循环结束条件的情况,它完全可以代替while语句。 5.3.1 for语句的一般形式 for (表达式1;表达式2;表达式3) 语句 例如:,5.3.2 for语句中的各表达式含义,在for语句中: 表达式1是初始表达式,一般是赋值语句,用于为循环的控制变量赋初值; 表达式2是条件表达式,它决定退出循环的条件; 表达式3是增量表达式,用于控制变量的变化方式。 for语句的执行过程是:进入for循环时,先对表达式1求值,然后对表达式2进行求值。如果其为假,则终止循环,执行for语句的后续语句;如果表达式2为真,执行for循环体中的语句。随后对表达式3求值,然后再次对表达式

8、2求值,由表达式2的值决定是否进行下次循环。在for循环中,表达式1是赋值语句,仅求值一次。其执行流程图见图5-6。 在for语句中,表达式1、表达式2和表达式3中任何一个都可以省略,但它们之间的分号不能省略。,三个表达式省略的情况分析,如果表达式1省略,此时应在for语句之前给循环变量赋值。注意省略表达式1时,其后的分号不能省略。例如 for ( ; i=50; i+) sum=sum+i; 执行时,跳过“表达式1”这一步,其它不变。 如果表达式2省略,既不判断循环条件,循环无终止地进行下去。也就是认为表达式2始终为真。其流程图见图5-7。 例如:for (i=1; ; i+) sum=su

9、m+i; 它相当于: i=1; while (1) sum=sum+i; i+;,图5-7 省略表达式2的流程,表达式3也可以省略,但此时程序设计者应另外设法保证循环能正常结束。如: for(sum=0;i=1;i=50) sum=sum+i; i+; 本例把i+的操作不放在for语句的表达式3的位置处,而作为循环体的一部分,效果是一样的,都能使循环正常结束。 表达式1可以是设置循环变量初值的赋值表达式,也可以是与循环变量无关的其它表达式。如 for(sum=0;i=50;i+)sum=sum+i; 表达式3也类似。,表达式1和表达式3可以是一个简单的表达式,也可以是逗号表达式,即包含一个以上

10、的简单表达式,中间用逗号间隔。如:for (i =1,j=100;i=j;i+,j-) k=i+j;,表达式1和表达式3都是逗号表达式,各包含两个赋值表达式,即同时设两个初值,使两个变量增值,执行情况见图5-8所示。,在逗号表达式内按自左向右进行求解,整个逗号表达式的值为其中最右边的表达式的值。如 for (i=1;i=50;i+,i+) sum=sum+i; 相当于 for (i=1;i=50;i=i+2) sum=sum+i; 表达式2一般是关系表达式(如i=50)或逻辑表达式如(ab & xy),但也可以是数值表达式或字符表达式,只要其值为非零,就执行循环体。,5.3.3 for语句与w

11、hile语句的比较,for语句最简单的应用形式也就是最易理解的形式如下; for(循环变量赋初值;循环条件;循环变量增值)语句 例如: for ( i=1; i=50; i+) sum=sum+i;,它的执行过程与图5-3完全一样。可以看到它相当于以下语句; i=1; while (i=50) sum=sum+i; i+;,对于以上for语句的一般形式也可以改写如下: 表达式1; while(表达式2) 语句 表达式3;,在上节的三个表达式省略的情况分析中,还包括以下两种情况: 可以省略表达式1和表达式3,只有表达式2,即只给循环条件。如:,在这种情况下,完全等同于while语句。可见for语

12、句比while语句功能强,除了可以给循环条件外,还可以赋初值,使循环变量自动增值等。,三个表达式都可以省略,如 for( ; ; )语句 相当于 while(1)语句 即不设初值,不判断条件(认为表达式2为 真),循环变量不增值。无终止地执行循环体。,5.4 break、continue和goto语句,5.4.1 break语句 格式:break 功能:break语句只能用在switch 语句或循环语句中,其作用是跳出switch语句或跳出本层循环,转去执行后面的程序。 在几种循环结构中,当循环次数不能预先确定的情况下,可以使用break语句。将break语句与条件语句配合使用,在循环体中增加

13、一个分支结构,当某个条件成立时,由break语句退出循环体,从而结束循环过程。 由于break语句的转移方向是明确的,所以不需要语句标号与之配合。使用break语句可以使循环语句有多个出口,在一些场合下使编程更加灵活、方便。,【例5-4】计算r=1到r=10时圆的面积,直到面积area大于100为止。 #define pi 3.14159图5-10 main() int r; float area; for(r=1;r100)break; printf(“narea%d=%f“,r,area); 从上面的for循环可以看到:当area100时,执行break语句,提前终止执行循环,即不再继续执

14、行其余的几次循环。执行结果如图5-10。 说明:break语句不能用于循环语句和switch语句之外的任何其它语句中。,图5-10,5.4.2 continue语句,格式:continue; 功能:结束本次循环,即不再执行循环体中continue之后的语句,转入下一次循环的判断与执行。 continue语句和break语句的区别是:continue语句只结束本次循环,而不是终止整个循环的进行。而break语句则是结束循环体,不再进行条件判断。如果有以下两个循环结构:,程序(1)的流程图如图5-11所示,而程序(2)的流程如图5-12所示。请注意5-11和图5-12中当“表达式2”为真时流程的转

15、向。,【例5-5】把100-200之间的不能被9整除的数输出。 main() int n; for (n=100; n=200; n+) if(n%9=0) continue; printf(“%dt“,n); getch(); 当n能被9整除时,执行 continue语句,结束本次循环,即跳过printf函数语句,只有当n不能被9整除时才执行 printf函数。 当然,例中的循环体也可以改用一个语句处理; if (n%9!=0) printf(“%dt“,n); 我们在程序中用continue语句无非为了说明 continue语句的作用。,5.4.3 goto语句,goto语句为无条件转向语

16、句。 格式:goto ; 说明: 语句标号用标识符表示,它的命名规则与变量名相同,即由字母、数字和下划线组成,其第一个字符必须为字母或下划线。不能用整数来作标号。例如: goto biaohao1; 但是 goto 121; 就是错误的,因为标号的表示方式是错误的。 功能:程序执行到goto 语句时,转到语句标号指定的语句上去执行。 一般有两种用途: (1)与if语句一起可构成循环结构;(但c语言提供的三个循环语句已经足够用了) (2)从循环体中跳转到循环体外。(这在上面的小节中已经看到完全可以由break;语句来实现),结构化程序设计方法主张限制使用goto语句,因为滥用goto语句将使程序流程无规律、可读性差。但也不是绝对禁止使用goto语句。目前,goto

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

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

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