全国计算机等级考试实用应试教程二级C语言循环结构ppt课件_第1页
全国计算机等级考试实用应试教程二级C语言循环结构ppt课件_第2页
全国计算机等级考试实用应试教程二级C语言循环结构ppt课件_第3页
全国计算机等级考试实用应试教程二级C语言循环结构ppt课件_第4页
全国计算机等级考试实用应试教程二级C语言循环结构ppt课件_第5页
已阅读5页,还剩29页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、第5章 循环构造本章要点本章要点:5.1 while语句和用语句和用while语句构成的循环构造语句构成的循环构造5.2 do-while语句和用语句和用do-while语句构成的循语句构成的循环构造环构造5.3 for语句和用语句和用for语句构成的循环构造语句构成的循环构造5.4 循环构造的嵌套循环构造的嵌套5.5 break和和continue语句在循环体中的作用语句在循环体中的作用5.6 程序举例程序举例5.1.1 while循环的普通方式由while语句构成的循环也称“当循环,While语句的普通方式为:While表达式循环语句;以下是几点阐明:1while是C言语的关键字。2whi

2、le后的表达式,可以是C言语中恣意合法的表达式,通常为关系表达式或逻辑表达式,但也可以是其他运算表达式。当表达式的值为零时,表示条件为假;非零时,表示条件为真。3循环体可以是一条简单可执行语句,也可以是复合语句。4假设第一次计算时表达式的值就为0,那么循环语句一次也不被执行,流程直接跳过While语句,执行下一条语句。重点提示:while型循环语句中循环体的执行次数可以从0到无穷。假设第一次计算表达式的值为0,那么循环体执行0次;假设表达式恒为真,那么堕入死循环。5.1.2 while循环的执行过程while循环的执行过程是:计算while后表达式的值,当值为非零时,执行循环体中的语句;当值为

3、零时,退出while循环。留意:进入while循环后,一定要有能使此表达式的值变为0的操作,否那么,循环将会无限制的进展下去,即进入死循环。在程序设计中,这个是不允许出现的。例如:计算1+2+3+100。main() int i,sum=0; i=1; while(i100时,循环条件就不满足,循环到此终了。假设无此语句,那么i的值不断不变,循环永不终了,这就称为“死循环。在程序设计中,是不允许死循环出现的。重点提示:在循环体中应有使循环趋于终了的语句。在程序设计中,是不允许死循环出现的。5.2 do-while语句和用do-while语句构成的循环构造5.2.1 do-while语句构成的循

4、环构造 do-while是另一种循环构造,它的普通方式为: do 循环语句;while表达式;以下是几点阐明:1do是C言语的关键字,必需和while结合运用。2在while表达式后的分号“;不可丢,它表示do-while语句的终了。3while后括号中的表达式可以是恣意合法的表达式,由它来控制循环能否执行。4do-while之间的循环体可以是一条可执行语句也可以是由“构成的符合语句。5.2.2 do-while循环的执行过程do-while语句的执行过程是:先执行一次指定的循环语句,然后判别表达式的值,假设表达式的值为非0,再前往重新执行循环语句,如此反复,直到表达式的值为0时才跳出循环语句

5、,执行下一条语句;假设表达式的值为0,那么不再前往重新执行循环语句,直接退出循环语句,执行下一条语句。如图5.1b所示。do while语句的特点是:先执行语句,后判别表达式的值。故do While语句又称“直到型循环构造。由于是先执行后判别,因此do while语句的循环语句至少被执行一次。留意:while圆括号后面有一个分号“;,书写时不能丢。例如:用do while循环构造来计算1+2+3+100。main() int i,sum=0; i=1; do sum+=i; i+; while(i=100); printf(dn,sum);程序运转结果为:5050可以看出,此例的结果与上节的例

6、程结果是完全一样的,也就是说,对同一问题既可以用while语句来处置,也可用do while语句来处置。在普通情况下,用while语句和do while语句处置同一问题时,假设二者的循环体一样,运转结果也就一样。但当while后面表达式的值一开场就为0时,两种循环构造的结果是不一样的。重点提示:do-while语句先执行语句,后判别表达式的值。故do-while语句又称“直到型循环构造。由于是先执行后判别,因此do-while语句的循环语句至少被执行一次。5.3 for语句和用for语句构成的循环构造5.3.1 for语句构成的循环构造for语句的普通方式为:for表达式1;表达式2;表达式3

7、循环语句;以下是几点阐明:1表达式1普通为赋值表达式,用于进入循环之前给循环变量赋初值。2表达式2普通为关系表达式或逻辑表达式,用于执行循环的条件断定,它与while、do while循环中的表达式作用完全一样。3表达式3普通为赋值表达式或自增、自减表达式,用于修正循环变量的值。for循环构造是几乎一切高级言语都提供的循环控制构造。但C言语中的for语句运用最为灵敏,它不仅可以用于循环次数曾经确定的情况,而且可以用于循环次数不确定而只给出循环终了条件的情况,因此它完全可以替代while语句和do while语句。重点提示:表达式1、表达式2、表达式3都必需为for语句规定的合法的表达式。for

8、语句的执行过程是: 先计算表达式1的值。 再计算表达式2的值,假设其值为真,那么执行循环体一次;否那么跳转第步。 然后计算表达式3的值。 转回上面第步。 终了循环,执行for语句下面一个语句。5.3.2 for循环执行过程图5.2 for语句的执行流程图重点提示:在整个for语句中,表达式1只计算一次,表达式2和表达式3那么能够计算多次。循环体能够多次执行,也能够一次都不执行。5.3.3 有关for语句的阐明1for语句的普通方式中的“表达式1可以省略,即:for;表达式2;表达式3 循环语句;但留意省略表达式1时,其后的分号不能省略。此时,应在for语句之前给循环变量赋初值。2假设省略表达式

9、2,即:for表达式1;表达式3 循环语句;那么表示表达式2的值一直为真,循环将无终止地进展下去。例如:for(i=1;i+) printf(%d,i);将无限循环输出1,2,3,4,5,6,3假设省略表达式3,即:for表达式1;表达式2; 循环语句;此时,也将产生一个无穷循环。因此,程序设计者应另外设法保证循环能正常终了,可以将循环变量的修正部分即表达式3放在循环语句中控制。例如:for(i=1;i=100;) sum+=i; i+;上述for语句中没有表达式3,而是将表达式3i+放在循环语句中,作用一样,都能运用循环正常终了。留意表达式2后面的分号不能省略。4也可以同时省略表达式1和表达

10、式3,即:for;表达式2; 循环语句;也即省略了循环的初值和循环变量的修正部分,此时完全等价于while语句。5同时省略表达式1、表达式2和表达式3,即:for; 循环语句; 相当于赋循环变量的初值,循环控制条件一直为真,不修正循环变量,故循环将无终止地进展下去。6在for语句中,表达式1和表达式3不仅可以运用简单表达式,也可以运用逗号表达式,即包含一个以上的简单表达式,中间用逗号间隔。在逗号表达式内按自左至右求解,整个表达式的值为其中最右边的表达式的值。例如: for(i=1;i=100;i+,sum=sum+i) 相当于 for(i=1;i=100;i+) sum=sum+i;7在for

11、语句中,表达式普通为关系表达式或逻辑表达式,但也可以是其他表达式如字符表达式、数值表达式。8for语句的循环语句可以是空语句。空语句用来实现延时,即在程序执行中等待一定的时间。如下为延时程序的例子:for(i=1;i=1000;i+);留意以上语句最后的分号不能省略,它代表一个空语句。例如:用for循环构造来计算1+2+3+100。main() int i,sum=0; for(i=1;i=100;i+) sum+=i; printf(%dn,sum);程序运转结果为:5050可以看出,此例的结果前两例是完全一样的。显然,用for语句简单、方便。重点提示:for语句中的表达式可以部分或全部省略

12、,但两个分号不能省略,且三个表达式均省略时,循环将会无限制执行,而构成死循环。因此,编写程序时,在for后面的一对圆括号内,应只含有能对循环进展控制的表达式,其它的操作尽量放在循环体内完成。5.4 循环构造的嵌套1循环嵌套的方式在一个循环体内又完好地包含了另一个循环,称为循环嵌套。循环的嵌套可以是多层,但每一层循环在逻辑上必需是完好的。例如以下几种方式的二重嵌套。 while与while二重嵌套while() while() do while与do while二重嵌套dodo while(); while(); for与for二重嵌套for(;)for(;) while与while二重嵌套2关

13、于循环嵌套的几点阐明1三种循环语句不仅各自可以嵌套,而且还可以相互嵌套。例如: while与do while二重嵌套while() do while; while与for二重嵌套while() for(;) do while与for二重嵌套do for(;) while();2运用嵌套时,应留意一个循环构造应完好地嵌套在另一个循环体内,不允许循环体间交叉。例如以下循环构造是不正确的:while() do while();3除了上述二重嵌套外,还可以有三重嵌套、四重嵌套等多层嵌套。4嵌套的外循环和内循环的循环控制变量不得同名,但并列的内、外循环允许有同名的循环控制变量。例如以下为合法的循环构造:

14、for(j=1;j=10;j+) for(i=1;i=10;i+) for(i=1;i=10;i+) 3循环嵌套程序举例利用双层for循环构造打印出99乘法表。main() int i,j; for(i=1;i10;i+) printf(%5d,i); printf(n); for(i=1;i=46;i+) printf(-); printf(n); for(i=1;i10;i+) for(j=1;j=9;j+) printf(%5d,i*j); printf(n); 程序运转结果为: 1 2 3 4 5 6 7 8 9- 1 2 3 4 5 6 7 8 9 2 4 6 8 10 12 14

15、16 18 3 6 9 12 15 18 21 24 27 4 8 12 16 20 24 28 32 36 5 10 15 20 25 30 35 40 45 6 12 18 24 30 36 42 48 54 7 14 21 28 35 42 49 56 63 8 16 24 32 40 48 56 64 72 9 18 27 36 45 54 63 72 811第45行和第78行为两个并列的for循环构造,作用是输出运转结果的第1行和第2行。2第6行和第9行的“printf(n);语句作用是输出一行后进展换行处置。3第1014行为二重嵌套for循环构造,作用是打印乘法表,其中第14行的作

16、用是每次退出内循环之时,即每次输出一行终了后进展换行处置。重点提示:在循环嵌套中,内嵌的第一个for循环的终了条件和外循环的控制变量是有关的,而最里面的for循环的循环终了条件是固定不变的。5.5 break和continue语句在循环体中的作用5.5.1 break语句在第四章中我们引见过,运用break语句可以使流程跳出switch语句体,在循环构造中,也可以运用break语句使流程跳出本层循环体,从而提早终了本层循环。break语句的普通方式为: break;关于break语句有以下几点阐明:1break语句不能用于循环语句和switch语句之外的任何其他语句中。2break语句只能用于

17、循环体内,不能用在循环语句上。如for(i=1;i10;break,i+)是不正确的。3break语句只能跳出一层循环,即从当前循环层中跳出。假设要跳出多层循环,可运用goto语句。例如:设计一个程序,求能同时满足除以3余1、除以5余3、除以7余5、除以9余7的最小正整数。main() int i; for(i=1;i+) if(i%3= =1&i%5= =3&i%7= =5&i%9= =7) break; printf(%dn,i); 程序运转结果为:313由于此题无法确定循环的条件和循环次数,因此应采用无限循环配以break语句的方法。重点提示:当break语句出如今循环体中的switch

18、语句体内时,其作用只是跳出该switch语句体,当break语句出如今循环体中,但并不在switch语句体内时,那么在执行break后,跳出本层循环。5.5.2 continue语句1continue语句的普通方式continue语句的作用是终了本次循环,即不再执行循环体中continue语句之后的语句,而是跳转到循环的开场处,进展下一次能否执行循环的断定。它的普通方式为:continue;2关于continue语句的几点阐明1continue语句只是终了循环构造中的本次循环,并非跳出整个循环过程。详细说:对while和dowhile语句,遇continue语句后,转向执行while之后圆括号内的条件表达式的判别;对for语句,遇continue语句后,转向执行表达式3。2执行continue语句并没有使整个循环终止。3continue语句与break语句有本质的区别:continue语句只是终了本次循环,而不终止整个循环的执行;而break语句的作用那么是强迫终止整个循环过

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论