第04章:循环结构程序设计,C语言程序设计课件,与中南大学出版社教材相配套.ppt

上传人:本田雅阁 文档编号:2069897 上传时间:2019-02-10 格式:PPT 页数:44 大小:275.01KB
返回 下载 相关 举报
第04章:循环结构程序设计,C语言程序设计课件,与中南大学出版社教材相配套.ppt_第1页
第1页 / 共44页
第04章:循环结构程序设计,C语言程序设计课件,与中南大学出版社教材相配套.ppt_第2页
第2页 / 共44页
第04章:循环结构程序设计,C语言程序设计课件,与中南大学出版社教材相配套.ppt_第3页
第3页 / 共44页
亲,该文档总共44页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述

《第04章:循环结构程序设计,C语言程序设计课件,与中南大学出版社教材相配套.ppt》由会员分享,可在线阅读,更多相关《第04章:循环结构程序设计,C语言程序设计课件,与中南大学出版社教材相配套.ppt(44页珍藏版)》请在三一文库上搜索。

1、第4章 循环结构程序设计,4.1 循环概述 4.2 用goto语句和if语句构成循环 4.3 while语句 4.4 do-while语句 4.5 for语句 4.6 循环的嵌套 4.7 几种循环的比较 4.8 break和continue语句 4.9 程序举例,4.1 循环概述,所谓循环即反复的意思,在C语言中指反复执行某些相同的操作。循环分为当型循环和直到型循环。其传统的流程图如图4-1(a)和(b)所示。,其相应的N-S流程图如图4-2(a)和(b)所示.,当型循环指当条件成立时反复执行语句,即先判断后执行;而直到型循环指先执行语句然后判断条件是否成立,当成立时再执行语句,即先执行后判断

2、。 在C语言中可以用以下四种方法来实现循环: 1. 用goto语句和if语句构成循环; 2. 用while语句; 3. 用do-while语句; 4. 用for语句。 其中while语句和 for语句可以实现当型循环结构。 do-while语句可以实现直到型循环结构,而用goto语句和if语句既可以实现当型循环结构也可以实现直到型循环结构。,4.2用goto语句和if语句构成循环,用goto语句和if语句构成循环有两种格式: 格式一: 语句标号:if(条件表达式) goto 语句标号; ,【例4.1】,这种用goto语句和if语句构成循环的语句执行过程为:先计算条件表达式的值,当条件表达式成立

3、(非0)时,执行大括号中的语句或语句组,执行到goto 语句时使程序又回到语句标号所指向的if语句,使得大括号中的语句反复执行,当计算出的条件表达式的值不成立(为0)时,程序跳出循环,执行大括号以下的语句。从它的执行过程,我们可以看出,它是一种当型循环。,格式二: 语句标号: if(条件表达式) goto 语句标号; ,这种用goto语句和if语句构成循环的语句执行过程为:先执行大括号中的语句或语句组,当执行到if语句,先计算条件表达式的值,当条件表达式成立(非0)时,goto 语句使程序又回goto 语句所指向的语句标号所指向的语句,然后又执行大括号中的语句,使得大括号中的语句反复执行,当计

4、算出的条件表达式的值为0时,程序跳出循环,执行大括号以下的语句。虽然它执行循环体的条件是条件表达式成立,从这一点看,它与一般的直到型循环不同,但从它的执行过程,我们可以看出,它也属于一种直到型循环。,用这种结构编写程序,例题4.1可以改写为: main() int i,sum=0; i=1; loop: sum=sum+i; /*标号名为loop*/ i=i+1; if (i=100) goto loop; printf(“sum=%d“,sum); ,程序执行结果为:sum=5050,【例4.2】,使用格式一和格式二的循环不同点在于,第一种格式的循环,循环体内的语句可以不执行,而第二种格式的

5、循环,循环体内的语句至少要执行一次。这里的循环体指语句标号和goto 语句标号及中间所有语句组成的一个集合。其中语句标号是按标识符规定书写的符号(它的命名规则与变量名的命名规则相同,这在前面已经介绍过,语句标号放在某一语句行的前面,标号后加冒号(:)。语句标号起标识语句的作用,语句标号必须与goto语句同处于一个函数中。C语言不限制程序中使用标号的次数,但各标号不得重名。,在结构化程序设计中一般不主张使用goto语句控制循环结构, 以免造成程序流程的混乱,使理解和调试程序都产生困难。一个使用goto语句较为合理的用法是跳出单循环或从多层的嵌套中跳出循环体。,4.3 while语句,While语

6、句可以实现当型循环结构。其一般形式如下: while(表达式)语句 省略号代表的是循环体语句。当循环体是一条语句时,可以不用大括号,但当循环体是两条或两条以上语句时,一定要用大括号。,其传统的流程图和N-S流程图分别如图4-3(a)和(b)所示。,执行过程如下: 先计算表达式的值,当值为真(非0)时,执行循环体语句,执行完循环语句后,再返回计算机表达式的值,直到表达式的值为假(0)时,退出循环,执行while语句的下一条语句。其语句可以为空语句、简单语句或作为循环体部分的复合语句。,【例4.3】 【例4.4】 【例4.5】,在使用while语句时,应注意以下几点: (1)while语句中的表达

7、式一般是关系表达式或逻辑表达式,只要表达式的值为真(非0)即可继续循环; (2)循环体如包括有一个以上的语句,则必须用 括起来,组成复合语句; (3)应注意循环条件的选择以避免死循环; (4)允许while语句的循环体又是while语句,从而形成双重循环。,4.4 do-while语句,do-while语句可以实现直到型循环结构。其一般形式如下: do while(表达式)语句;,省略号代表的是循环体语句,表达式是循环条件。 其传统的流程图和N-S流程图分别如图4-1(b)和4-2(b)所示。循环是在循环的尾部检验它的条件,而不是在头部。,其执行过程如下: 先执行循环体语句一次,再判断表达式的

8、值,若为真(非0),则继续执行循环体语句,直到表达式的值为假(0)时才退出循环。do-while语句和while语句的区别在于do-while是先执行后判断,因此,do-while语句至少要执行一次循环体语句。而while语句是先判断后执行,如果条件不满足,则一次循环体语句也不执行。一般用while语句所编写的程序也可以用do-while来编写。,【例4.6】,对于do-while语句还应注意以下几点: (1)在if语句,while语句中, 表达式后面都不能加分号, 而在 do-while语句的表达式后面则必须加分号; (2)do-while语句也可以组成多重循环,而且也可以和while语句相

9、互嵌套; (3)在do和while之间的循环体由多个语句组成时,也必须用 括起来组成一个复合语句; (4)do-while和while语句相互替换时,要注意修改循环控制条件。,4.5 for语句,for语句是C语言中所提供的功能最强、使用最为灵活的一种循环语句。特别适用于循环次数固定而循环条件不确定的情况。,4.5.1 for语句的一般形式,for语句的一般形式如下: for(表达式1;表达式2;表达式3) (1)表达式1通常是用来给循环变量赋初值,一般是赋值表达式。也允许在for语句之外给循环变量赋初值,此时可省略该表达式; (2)表达式2通常是循环条件,一般为关系表达式或逻辑表达式,也可以

10、是其它表达式; (3)表达式3通常可用来修改循环变量的值,一般是赋值表达式。 三个表达式都是可选项,都可以省略。但特别提请注意的是,表达式1和表达式2后的分号“;”不能省略。,for语句的执行过程如下: (1)首先计算表达式1的值; (2)再计算表达式2的值,若值为真(非0)则执行循环体语句一次,否则跳出循环; (3)循环体语句执行完后,再计算表达式3的值,转(2)步去执行。在整个for循环过程中,表达式1只计算一次,表达式2和表达式3则可能计算多次。,for语句的流程图见图4-6。,有一点需要指出:for循环的条件检验总是在循环的头部进行的。这也就是说,当开始时条件为不成立(0)时,不执行循

11、环体,例如程序段: x=10; for(y=10;y!=x,+y) printf (“ %d “, y); printf (“ %d “,y); 进入循环中,由于x等于y,循环没有被执行。由于条件表达式为假,因此不论循环体还是循环控制变量的一目加都没有被执行,所以y仍然是赋给它的值10,且在屏幕上显示值为10。,for语句最主要的特点是:特别适合已知循环次数的循环语句,下面介绍一下for语句中循环次数的计算方法。根据for循环的循环变量的变化情况。循环次数的计算可以用公式进行计算: n=(int)(终值-初值+步长)/步长) 其中,初值指循环变量的初始值,终值指循环变量满足条件的最终值,步长指

12、循环变量每循环一次所变化的量。 例如:循环语句for(n=1;n=100;n+)(设n为整形变量)控制循环体反复执行的次数为 n=(int)(100-1+1)/1)=100 又如:循环语句for(n=100;n0;n=n-2)(设n为整形变量)控制循环体反复执行的次数为 n=(int)(1-100-2)/(-2))=50,4.5.2 for循环的变量,最常用的一种变量是使用逗号运算符使得两个或两个以上的变量共同实现对循环的控制。例如,下面例子使用变量x和y共同来控制循环,这两个变量都是在for语句的内部被初始化。 for(x=0,y=0;x+y10;+x) y=getchar(); y=y-0

13、;/*subtract the ASCII code for 0 from y*/ ,这里逗号分隔了两个初始化语句。每次x增加1,重复循环,y值由键盘输入。x和y之和大于或等于10时,才能中止循环。这就需要将y值初始化为零,以便在第一次计算条件表达式的值时,它的值已经被定义了。如果y没有被定义,也许碰巧(或前面的程序用到过),它的值是10 或大于10,这就使得条件为false,并退出循环。 for循环还有另一种极有用的变体。在前面所提到的for语句的三个部分可以是C语言中任何有效的表达式。实际上,不必注意这些部分是用来干什么的。有些main中的for循的每个部分是由调用函数组成的,它们分别可以

14、是提示用户的信息或从键盘上输入一个数。,4.5.3 无限循环,for循环最有价值的一种用法是建立无限循环。由于构成for循环的三个表达式都是没有被要求,因此可以运用空的条件表达式而使得循环无休止地进行下去,例如: for(;) printf(”this loop will run forever.n”) 有一点必须强调:for循环中的语句可以是空语句,但不能省略分号,即for语句必须有两个分号。,4.5.4 无循环体for循环,正像C语言句法所定义的那样,一条语句可以是空语句。这就是说,for循环体(或其他循环形式)都可以是空语句。这个事实可用来改善某些算法的效率以及产生时间延迟循环。,在编程

15、过程中经常需要给一个输入流保留空间。例如,一个数据库可能要求查询一条信息,如“show all balance less than 40000”。那么,数据库需要查询每个字符,这些字符是无空格地逐个被放置在这条信息中的。即,数据库输入处理程序识别“show”而不是“show”为一条命令。,【例4.7】 【例4.8】 【例4.9】,在使用for语句中要注意以下几点: (1)for语句中的各表达式都可省略,但分号间隔符不能少; 如:for(;表达式;表达式)省去了表达式1; for(表达式;表达式)省去了表达式2; for(表达式;表达式;)省去了表达式3; for(;)省去了全部表达式。,(2)

16、在循环变量已赋初值时,可省去表达式1。如省去表达式2或表达式3则将造成无限循环,这时应在循环体内设法结束循环。,(3)循环体可以是空语句。例如:从键盘输入一行字符然后逐个输出每一个字符。,(4)for语句也可与while,do-while语句相互嵌套,构成多重循环。,4.6 循环的嵌套,一个循环体内的语句又包含另一个完整的循环结构,称为循环嵌套。如果内嵌的循环体中还包含完整的循环,这就构成了多层循环。 三种循环语句(while,for,do-while)可以相互嵌套。例如,以下几种均为合法的循环嵌套。,(1)for语句和while语句构成的循环嵌套; for() while() ,(2)do-

17、while语句和for语句构成的循环嵌套; do for( ) while();,(3)do-while语句和while语句构成的循环嵌套; while() do() while(); ,(4)for语句和for语句构成的循环嵌套。 for( ) for() ,【例4.10】 【例4.11】,4.7 几种循环的比较,(1)四种循环都可以用来处理同一问题,一般情况下它们可以互相代替。但一般不提倡使用goto型循环语句; (2)while和do-while循环,只在while后面指定循环条件,在循环体中包括应反复执行的操作语句,包括使循环趋于结束的语句(如i+,或i=i+1等)。 for循环可以在

18、表达式3中包含使循环趋于结束的操作,甚至可以将循环体中的操作全部放到表达式3中。因此for语句的功能更强,凡用while循环能完成的,用for循环都能实现。,(3)用while和do-while循环时,循环变量初始化的操作应在while和do-while语句之前完成。而for语句可以在表达式1中实现循环变量的初始化。 (4)while和for循环是先判断表达式,后执行语句;而do-while循环相反,是先执行语句,后判断表达式,而goto循环则两者兼有。 (5)对while循环、do-while循环和for循环,可以用break语句跳出循环,用continue语句结束本次循环。而对使用goto

19、语句和if语句构成的循环,不能使用break语句和continue语句进行控制。,4.8 break和continue语句,4.8.1 break语句,break语句有两种用法。第一种用法是在switch语句中,跳出switch结构,转去执行后面的程序,其用法在第三章中已经介绍;第二种用法是,绕过一般的循环条件检验,立即强制地中止一个循环。下面介绍第二种用法:,break语句的一般形式如下: break; 当一个循环体内的break语句被执行时,循环立即中断,并转向循环体外的下一条语句.,4.8.2 continue语句,Continue语句有点像break语句。continue语句只能用在循环体内,不能用在其他位置。 其一般形式如下: continue;,其功能是:结束本次循环,即不再执行该循环体中continue语句之后的语句,转入下一次循环条件的判断与执行,所以有时又称短路语句。应当注意的是:break语句在循环体中的作用是结束整个循环,而continue语句只结束本次循环,继续下一次循环,即并不退出循环。,【例4.12】,4.9 程序举例,【例4.13】 【例4.14】 【例4.15】 【例4.16】 【例4.17】 【例4.18】 【例4.19】 【例4.20】 【例4.21】 【例4.22】 【例4.23】 【例4.24】,

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

当前位置:首页 > 其他


经营许可证编号:宁ICP备18001539号-1