[工学]c语言程序设计第6章课件

上传人:tia****nde 文档编号:70637831 上传时间:2019-01-17 格式:PPT 页数:49 大小:432.31KB
返回 下载 相关 举报
[工学]c语言程序设计第6章课件_第1页
第1页 / 共49页
[工学]c语言程序设计第6章课件_第2页
第2页 / 共49页
[工学]c语言程序设计第6章课件_第3页
第3页 / 共49页
[工学]c语言程序设计第6章课件_第4页
第4页 / 共49页
[工学]c语言程序设计第6章课件_第5页
第5页 / 共49页
点击查看更多>>
资源描述

《[工学]c语言程序设计第6章课件》由会员分享,可在线阅读,更多相关《[工学]c语言程序设计第6章课件(49页珍藏版)》请在金锄头文库上搜索。

1、第5章 循环结构程序设计,池州学院 计算机中心,C 语言程序设计,2019/1/17,2,本章主要内容,概述 goto语句及用goto语句实现循环控制 while循环控制 do-while循环控制 for循环控制 循环的嵌套 几种循环的比较 Break语句和continue语句 循环结构程序设计举例,2019/1/17,3,6.1 用goto语句实现循环,Goto语句为无条件转移语句,它的一般形式为:goto 语句标号; 语句标号是用标识符表示,它的定义规则与变量名相同,即由字母、数字和下划线组成,其第一个字符必须为字母或者下划线。不能用整数来做标识。例如: Goto label_1为合法的,

2、 Goto 123 为非法的; 一般说来, goto语句有两种用途: (1)与if语句一起构成循环结构。 (2)从循环体中跳转到循环体外,在C语言中可以使用break语句和continue语句跳出本层循环和结束本次循环,2019/1/17,4,6.1 用goto语句实现循环,不提倡使用goto语句,注意: goto语句能实现程序无条件转移,为编程提供了便利。但是无限制地使用,会破坏程序的结构化程度。因此应限制使用。,书113页例题6.1,2019/1/17,5,6.2 while循环控制,实现“当型”循环。语句一般格式 while (表达式) 语句,一般为关系表达式或逻辑表达式,也可以是C语言

3、其他类型的合法表达式 用来控制循环体是否执行,称为内嵌语句,可以是基本语句、控制语句,也可以是复合语句 是循环重复执行的部分,2019/1/17,6,功能:,计算表达式的值,为非0(逻辑真)时,重复执行内嵌语句,每执行一次,就判断一次表达式的值,直到表达式的值为0 时结束循环,转去执行while后面的语句。,循环控制条件,循环体,2019/1/17,7,例如:,【例5.1】编写程序,求100个自然数的和 即: s=1+2+3+ +100,思路:寻找加数与求和的规律,加数i从1变到100,每循环一次,使i增1,直到i的值超过100。i的初值设为1。 求和设变量 sum 存放和,循环求sum=su

4、m+i,直至i超过100。,2019/1/17,8,算法和程序:,main( ) int i,sum; i=1; sum=0; while (i=100) sum=sum+i; i+; printf(“sum=%dn“,sum); ,运行jc5_1,程序输出结果: sum=5050,i: 循环控制变量 sum: 累加器,2019/1/17,9,注意:,如果while的 (表达式) 值为0,则循环体一次也不执行 (例如当i的初值=101) 。 在循环体中必须有使循环趋向结束的操作,否则循环将无限进行(死循环)。 在循环体中,语句的先后位置必须符合逻辑,否则会影响运算结果。,思考程序段的输出? w

5、hile (i=100) i+; sum=sum+i; ,运行后,输出: sum=5150 原因是什么?,2019/1/17,10,注意(续):,为了保证循环正常运行,应该特别注意: 循环控制条件的描述 控制条件的初始状态(初始值) 循环体内部对控制条件的影响,2019/1/17,11,5.2 do-while语句,语句一般格式 do 语句 while (表达式); 功能: 先执行内嵌语句(循环体),之后计算表达式的值,不为0(逻辑真)时,再执行循环体并判断条件,直到表达式的值为 0 结束循环,转去执行while下面的语句。,2019/1/17,12,do-while循环的算法,N-S结构图,

6、main( ) int i=1,sum=0; do sum=sum+i; i+; while (i=100); printf(“%dn“,sum); ,用do-while语句 求100个自然数的和,2019/1/17,13,说明:,while和do-while都能实现循环控制,while结构程序通常都可以转换成do-while结构,区别: do- while 语句先执行循环体再判断条件,循环体至少执行一次; while 语句先判断条件再执行循环体,循环体有可能一次也不执行 dowhile循环体中一定要有能使表达式值趋于0的操作(如i+),否则会出现死循环。,2019/1/17,14,do-wh

7、ile语句的简单应用,【例5.3】用辗转相除法求m和n的最大公约数,2019/1/17,15,算法和程序:,main( ) int m,n,r; scanf(“%d, %d“, ,运行jc5_3,程序运行情况如下: 24, 60 12,2019/1/17,16,5.3 for语句,语句一般格式 for (表达式1;表达式2;表达式3) 语句,功能: 计算表达式1的值,再判断表达式2,如果其值为非0(逻辑真),则执行内嵌语句(循环体),并计算表达式3;之后再去判断表达式2,一直到其值为0时结束循环,执行后续语句。,循环初始条件,循环控制条件,循环体,2019/1/17,17,for语句的算法,例

8、如: main( ) int i,sum; sum=0; for ( i=1; i=100; i+) sum=sum+i; printf(“sum=%dn“,sum); ,可部分或全部省略,但“;”不可省略,2019/1/17,18,省略for语句的表达式, 表达式1、2、3全省略,即: for ( ; ; ) 不设初值、不判断条件(认为表达式2为真值),循环变量不增值。无终止的执行循环体。就等同于:while (1),会无限循环(死循环),注意:在省略某个表达式时,应在适当位置进行循环控制的必要操作,以保证循环的正确执行, 省略表达式1和表达式3,即:值给出循环条件 for(;表达式2;)

9、就等同于:while( 表达式2 ) 省略表达式2,即:不判断循环条件,循环无终止的做下去,认为表达式2始终为真。 for(表达式1; ;表达式3) 就等同于:表达式1; while(1)表达式3;,2019/1/17,19,(4)省略表达式1,此时应在FOR之前赋初值。注意,省略表达式1时,其后的分号不能省略。 FOR(;表达式2;表达式3) (5)表达式3也可以省略,但此时程序设计时应另外保证循环能正常结束。 FOR(i=1;i=100;) sum=sum+1; i+; I+的操作不放在FOR 语句的表达式3处,而作为循环体的一部分,效果是一样的,都能使循环正常结束。,2019/1/17,

10、20,(6)表达式一般是关系表达式(I=0)或逻辑表达式(ab&xy),但也可以是数值表达式或字符表达式,只要其值为非零,就执行循环体。书120页,2019/1/17,21,例如:, i=1; for ( ; i100) for (i=1; i100) i+; ,2019/1/17,22,说明:,所有用 while 语句实现的循环都可以用for 语句实现。,等价于:,for(表达式1;表达式2 ;表达式3) 语句;,表达式1; while (表达式2) 语句; 表达式3; ,2019/1/17,23,for语句的简单应用,【例5.4】求n! ,即计算p=123n的值。,思路:求阶乘与求累加的运

11、算处理过程类似,只要将“+”变为“*”。,设置: 乘数i ,初值为1,终值为n(n是循环控制终值,需要从键盘输入) 累乘器 p ,每次循环令p = p*i,2019/1/17,24,程序:,main( ) int i, n; long p; p=1; printf(“Enter n:“); scanf(“%d“, ,思考: 如何输出1!, 2!, , n! ? 如何求s =1!+ 2!+ + n! ?,运行jc5_4,2019/1/17,25,熟悉几个循环语句,while (!x) x+; 当 x=0 时,执行循环体x+;,while (c=getchar( ) != n) n=n+1; n

12、称为计数器,作用是统计输入字符的个数 while (num+5); 先执行循环体x*=-3,再判断条件(x5) for (n=0; n26; n+) printf(“%c “, n+A); 作用是输出26个大写字母 for (sum=0, i=1; i=100; sum=sum+i, i+=2) ; 作用是计算100以内的奇数和,2019/1/17,26,6.6循环的嵌套,一个循环体内又包含另一个完整的循环结构,称为循环的嵌套。内嵌的循环中还可以嵌套循环,这就是多层循环。 3种循环可以互相嵌套。,2019/1/17,27,5.6 循环的嵌套,如果循环语句的循环体内又包含了另一条循环语句,则称为

13、循环的嵌套 例如: #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,外循环语句,内循环语句,2019/1/17,28,注意:,while、do-while、for循环语句可以并列,也可以相互嵌套,但要层次清楚,不能出现交叉。 多重循环程序执行时,外层循环每执行一次,内层循环都需要循环执行多次。 例如:,for(a=1;a=10;a+) for (b=0;b=5;b+) ,外循环执行了10次,内循环执行60次 循环正常结束时,

14、内循环执行了106=60次,2019/1/17,29,6.7几种循环语句的比较,while和do-while语句的表达式只有一个,for语句有三个。 while 和for先判断循环条件后执行循环体,do-while语句先执行循环体后判断循环条件。,一般不提倡用goto型循环 while语句多用于循环次数不定的情况 do-while语句多用于至少要运行一次的情况 for语句多用于要赋初值或循环次数固定的情况,2019/1/17,30,6.8 循环结构中的跳转语句,有如下三种语句实现跳转: continue语句 break语句 goto语句 在循环语句的循环体中使用,可以进行循环的流程控制,201

15、9/1/17,31,6.8.1 continue语句及应用,功能: 中断循环体的本次执行(即跳过循环体中尚未执行的语句),立即开始执行下一次循环。,while语句,do-while语句,for语句,2019/1/17,32,例如:, int x,n=0,s=0; while (n10) scanf(“%d“, int x,n=0,s=0; do scanf(“%d“, for (n=0,s=0; n10; n+) scanf(“%d“, ,2019/1/17,33,应用举例,【例5.7】把100200之间能被7整除的数,以十个数为一行的形式输出,最后输出一共有多少个这样的数。,2019/1/1

16、7,34,算法和程序,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,2019/1/17,35,6.8.2 循环中break的应用,功能: 利用break语句能够强迫终止本层循环,转到后续语句执行。,while语句,do-while语句,for语句,2019/1/17,36,例如:, int x,n=0,s=0; while (n10) scanf(“%d“, int x,n=0,

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

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

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