循环结构程序设计剖析

上传人:今*** 文档编号:108070305 上传时间:2019-10-22 格式:PPT 页数:27 大小:836.50KB
返回 下载 相关 举报
循环结构程序设计剖析_第1页
第1页 / 共27页
循环结构程序设计剖析_第2页
第2页 / 共27页
循环结构程序设计剖析_第3页
第3页 / 共27页
循环结构程序设计剖析_第4页
第4页 / 共27页
循环结构程序设计剖析_第5页
第5页 / 共27页
点击查看更多>>
资源描述

《循环结构程序设计剖析》由会员分享,可在线阅读,更多相关《循环结构程序设计剖析(27页珍藏版)》请在金锄头文库上搜索。

1、1,第5章循环结构程序设计,5.1 循环结构解决的问题 5.2 while语句 5.3 do-while语句 5.4 for语句 5.5 循环语句的比较 5.6 循环嵌套 5.7 改变循环的执行流程 5.8 goto语句 5.9 循环结构程序综合举例,5.1循环结构解决的问题,程序设计解决实际问题的过程中经常会碰到许多具有规律性的重复运算处理的问题,在处理这类问题时需要把程序中的某些语句反复执行多次。下面是具有这种特征的一些例子: 向计算机系统输入100个学生的档案,重复进行100次输入操作。 为全班30个学生分别计算其5门课的平均成绩,重复进行30次求平均数的算术运算。 求1 + 2 + 3

2、 + + 100的和,重复进行100次加法操作。 检查100名毕业生是否具有获得学位证书的资格,重复进行100次判断操作。 C语言提供标准的三种循环控制语句:while语句、do-while语句和for语句。,5.2 while语句,while循环语句的一般形式如下: while(表达式) 语句,使用while语句时应该注意以下几点: (1) 循环体只能包含一条语句,当循环体需要多条语句组成时,使用复合语句。 (2) 循环通常在重复有限的次数后结束,因此循环体中应该包含使循环继续条件最终变为“假”的语句。如果循环继续条件永远为“真”的情况,则循环无法结束,称为“死循环”。 (3) 由于whil

3、e语句执行过程是先判断条件,再执行循环体,因此循环体有可能一次都不执行。,例5-1:编程求1 + 2 + 3 + + 100的值,使用while语句。,#include int main() int i, sum; sum=0; /和的初始值为0 i=1; while(i=100) sum=sum+i; /累加运算 i=i+1; /累加项加1,准备下次加法 printf(“1+2+3+.+100 = %dn“,sum); return 0; ,1+2+3+.+100 = 5050,例5-2:编写程序,从键盘输入多个字符,输入的字符是回车时表示字符输入结束,统计并输出其中数字字符的个数。,#in

4、clude int main() int count; char ch; count=0; ch=getchar(); /输入第一个字符 while(ch!=n) if(ch=0 ,ABC123,456XYZ7. number of digit: 7,5.3 do-while语句,do-while循环语句的一般形式如下: do 语句 while(表达式);,使用do-while语句时,需要注意以下问题: (1) 循环体需要多条语句组成时,使用复合语句。 (2) 由于do-while语句执行过程是先执行循环体,再判断循环条件,因此循环体至少会执行一次。,例5-3:编程求1 + 2 + 3 + +

5、 100的值,使用do-while语句。,#include int main() int i=1, sum=0; do sum=sum+i; i+; while(i=100); printf(“1+2+3+.+100 = %dn“,sum); return 0; ,1+2+3+.+100 = 5050,5.4 for语句,for循环语句的一般形式如下: for(表达式1; 表达式2; 表达式3) 语句,使用for语句时,需要注意以下问题: (1) 循环体需要多条语句组成时,使用复合语句。 (2) for循环语句括号中的三个表达式之间用分号隔开,表达式1只执行一次,一般用来进行整个循环开始之前的

6、初始化工作,常见的用法是初始化循环控制变量;表达式2的值决定循环是否继续执行,是循环控制条件;表达式3在循环体每次执行后都计算一次,常见的用法是修改循环控制变量的值。 (3) for语句执行过程是先判断循环条件,再执行循环体,因此循环体有可能一次也不执行。 (4) for语句中的三个表达式都可以省略,但是作为分隔符的分号是不能省略的。省略表达式1时,对应的初始化工作可以放在循环语句前面完成;省略表达式3时,相应的工作可以放在循环体的最后完成;省略表达式3时,for循环语句的循环条件默认为非0,即循环条件永远为真。,例5-3:编程求1 + 2 + 3 + + 100的值,使用for语句。,#in

7、clude int main() int i, sum=0; for(i=1;i=100;i+) sum=sum+i; printf(“1+2+3+.+100 = %dn“,sum); return 0; ,1+2+3+.+100 = 5050,5.5 循环语句的比较,while循环和for循环的循环继续条件检查是在循环体执行之前进行的,称为前置检测循环,循环体执行次数最少为0次;do-while循环的循环继续条件检查是在循环体执行之后进行的,称为后置检测循环,循环体执行次数最少为1次。而for语句最为灵活。在一定条件下,三者可以相互取代。,基于代码易读性考虑,编写程序处理循环结构时,选择哪一

8、种循环语句没有严格规定,几个常用的规则如下: 如果循环次数已经知道的情况使用for语句; 循环次数不确定的情况使用while语句; 如果需要在检查循环继续条件之前执行循环体,则使用do-while语句。,5.6 循环嵌套,一个循环语句的循环体内包含另一个完整的循环语句,称为循环的嵌套。循环的嵌套可以有很多层,一个循环的内嵌一层循环叫双层循环嵌套,简称双重循环。在循环嵌套的内层循环中再内嵌一层或多层循环语句可以形成多重循环。,例5-5:编写程序输出九九乘法表。,思路分析:九九乘法表由9行构成,第1行有1个乘法等式,第2行有2个乘法等式,依此类推。解决这类问题时,可以采用逐步分析的方法,分析思路如

9、下: (1) 首先考虑如何需要输出9行数据。可以设计如下的循环结构,该循环用于控制行的输出,每循环执行循环体一次,就输出一行。 for(i=1; i=9; i+) 输出第i行; (2) 然后考虑如果输出第i行。根据分析,第i行由i个乘法等式和一个换行字符组成,因此可以设计一个循环结构输出i个乘法等式,然后再输出一个换行。 (3) 最后将上述分析的循环结构进行嵌套,可以得到程序的整体结构。,#include int main() int i, j; for(i=1; i=9; i+) for(j=1; j=i; j+) printf(“%d*%d=%2d “, i,j,i*j); printf(

10、“n“); return 0; ,1*1= 1 2*1= 2 2*2= 4 3*1= 3 3*2= 6 3*3= 9 4*1= 4 4*2= 8 4*3=12 4*4=16 5*1= 5 5*2=10 5*3=15 5*4=20 5*5=25 6*1= 6 6*2=12 6*3=18 6*4=24 6*5=30 6*6=36 7*1= 7 7*2=14 7*3=21 7*4=28 7*5=35 7*6=42 7*7=49 8*1= 8 8*2=16 8*3=24 8*4=32 8*5=40 8*6=48 8*7=56 8*8=64 9*1= 9 9*2=18 9*3=27 9*4=36 9*5

11、=45 9*6=54 9*7=63 9*8=72 9*9=81,5.7改变循环的执行流程,无论哪种循环语句,正常执行情况下都是由“循环条件”来决定是否结束循环的执行。但在实际程序设计中有时需要根据循环执行情况的变化而“提前”结束循环执行或跳过本次循环的剩余语句进入下一次循环的情况。C语言使用break语句和continue语句解决这些问题。,1. break语句 break语句可以应用循环语句中,用于跳出循环体。下面对break语句的使用进行详细说明: (1) 一般形式:break; (2) break语句只能用于switch、while、do-while和for语句中。 (3) break语

12、句的作用是结束“直接包含”它的循环或switch语句的执行,即它只能跳出包含它的一层语句结构。当break出现循环语句的嵌套结构时,只能跳出包含它的最内层循环;当break出现在循环语句与switch语句的嵌套结构时,同样只能跳出包含它的最内层的switch语句或循环语句。,例5-6:输入一个正整数判断并输出它是否是素数。 思路分析:素数也称为质数,其数学定义为:一个大于1的正整数,除了1和它本身外,不能被整除以其他正整数。 根据定义,该问题可以采用穷举法进行实现,即对于正整数n,从2开始到n依次尝试每个数是否能够被n整除,如果存在能够这样的数,则n不是素数;如果不存在这样的数,则n是素数。

13、进一步分析可以知道,在找到第一个可以整除的数后,无需继续检查,直接结束循环即可。,#include #include int main() int i, n, is_prime, k; printf(“Input a number(1): “); scanf(“%d“, ,Input a number(1): 17 17 is prime number,2. continue语句 有时并不希望终止整个循环的执行,而只是提前结束本次循环迭代,进入下一次循环迭代。这时可以使用continue语句,其使用方法如下: (1) 一般形式:continue; (2) continue语句只能用于while

14、、do-while和for语句中。 (3) continue语句的作用是结束循环体的本次执行,即跳过循环体中continue语句之后的其它语句,转去判定循环条件,决定能否继续执行循环。 用于while和do-while语句中时,跳过循环体中continue语句之后的其它语句后,直接判断循环条件是否成立;而用于for语句中时,跳过循环体中continue语句之后的其它语句后,先执行表达式3,然后再去判断循环条件是否成立。,例5-7:统计在100到1000之间不能被7整除的整数的个数。 思路分析:解决该问题需要对指定范围中的每一个整数进行检查,如果不能被7整除,就进行计数加1;若能被7整除,则不加

15、1。,#include int main() int i, count; count = 0; /计数初始为0 for(i=100; i=1000; i+) if(i%7 = 0) continue; /如果整除7,跳过计数语句,继续检查下一个数 count = count+1; /计数加1 printf(“count=%dn“, count); return 0; ,count=773,3. goto语句 goto语句也称为无条件转移语句,其一般格式如下: goto 语句标号; 如: label: i+; loop: while(x7) C语言不限制程序中使用标号的次数,但各标号不得重名。goto语句的语义是改变程序流向,转去执行语句标号所标识的语句。 goto语句通常与条件语句配合使用,可用来实现条件转移、构成循环和跳出循环体等功能。 但是,在结构化程序设计中一般不主张使用goto语句,以免造成程序流程的混乱,使理解和调试程序都产生困难。,5.9 循环结构程序综合举例,课后习题,教材课后习题4、5、6 、 7,本章结束,

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

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

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