c语言程序设计第6章课件.ppt
《c语言程序设计第6章课件.ppt》由会员分享,可在线阅读,更多相关《c语言程序设计第6章课件.ppt(49页珍藏版)》请在得力文库 - 分享文档赚钱的网站上搜索。
1、第第5 5章章 循环结构程序设计循环结构程序设计 池州学院池州学院 计算机中心计算机中心C C 语言程序设计语言程序设计1本章主要内容本章主要内容l l概述概述l lgoto语句及用语句及用goto语句实现循环控制语句实现循环控制l lwhile循环控制循环控制l ldo-while循环控制循环控制l lfor循环控制循环控制l l循环的嵌套循环的嵌套l l几种循环的比较几种循环的比较l lBreak语句和语句和continue语句语句l l循环结构程序设计举例循环结构程序设计举例26.1 用用goto语句实现循环语句实现循环GotoGoto语句为无条件转移语句,它的一般形式为:语句为无条件转
2、移语句,它的一般形式为:语句为无条件转移语句,它的一般形式为:语句为无条件转移语句,它的一般形式为:goto goto 语句标号;语句标号;语句标号;语句标号;语句标号是用标识符表示,它的定义规则与变量名语句标号是用标识符表示,它的定义规则与变量名语句标号是用标识符表示,它的定义规则与变量名语句标号是用标识符表示,它的定义规则与变量名相同,即由字母、数字和下划线组成,其第一个相同,即由字母、数字和下划线组成,其第一个相同,即由字母、数字和下划线组成,其第一个相同,即由字母、数字和下划线组成,其第一个字符必须为字母或者下划线。不能用整数来做标字符必须为字母或者下划线。不能用整数来做标字符必须为字
3、母或者下划线。不能用整数来做标字符必须为字母或者下划线。不能用整数来做标识。例如:识。例如:识。例如:识。例如:Goto Goto label_1label_1为合法的,为合法的,为合法的,为合法的,Goto Goto 123 123 为非法的;为非法的;为非法的;为非法的;一般说来,一般说来,一般说来,一般说来,goto语句有两种用途:语句有两种用途:(1)与)与if语句一起构成循环结构。语句一起构成循环结构。(2)从循环体中跳转到循环体外,在)从循环体中跳转到循环体外,在C语语言中可以使用言中可以使用break语句和语句和continue语句语句跳出本层循环和结束本次循环跳出本层循环和结束
4、本次循环36.1 用用goto语句实现循环语句实现循环l不提倡使用不提倡使用goto语句语句注意注意:goto语句能实现程序无条件转移,为编程语句能实现程序无条件转移,为编程提供了便利。但是无限制地使用,会破坏提供了便利。但是无限制地使用,会破坏程序的结构化程度。程序的结构化程度。因此应限制使用。因此应限制使用。书113页例题6.146.2 while循环控制循环控制 l l实现实现“当型当型”循环。语句一般格式循环。语句一般格式 while(表达式表达式)语句语句 l l一般为一般为一般为一般为关系关系关系关系表达式表达式表达式表达式或或或或逻辑逻辑逻辑逻辑表达式,也表达式,也表达式,也表达
5、式,也可以是可以是可以是可以是C C语言其他类语言其他类语言其他类语言其他类型的合法表达式型的合法表达式型的合法表达式型的合法表达式 l l用来控制循环体是用来控制循环体是用来控制循环体是用来控制循环体是否执行否执行否执行否执行l l称为称为称为称为内嵌语句内嵌语句内嵌语句内嵌语句,可以是基本语句、可以是基本语句、可以是基本语句、可以是基本语句、控制语句,也可控制语句,也可控制语句,也可控制语句,也可以是复合语句以是复合语句以是复合语句以是复合语句l l是循环重复执行是循环重复执行是循环重复执行是循环重复执行的部分的部分的部分的部分 5功能:功能:l l计算表达式的值计算表达式的值计算表达式的
6、值计算表达式的值,为非,为非,为非,为非0 0(逻辑真)时,重复执(逻辑真)时,重复执(逻辑真)时,重复执(逻辑真)时,重复执行行行行内嵌语句内嵌语句内嵌语句内嵌语句,每执行一次,就判断一次表达式的,每执行一次,就判断一次表达式的,每执行一次,就判断一次表达式的,每执行一次,就判断一次表达式的值,直到表达式的值为值,直到表达式的值为值,直到表达式的值为值,直到表达式的值为0 0 时结束循环,转去执行时结束循环,转去执行时结束循环,转去执行时结束循环,转去执行whilewhile后面的语句。后面的语句。后面的语句。后面的语句。当表达式为真当表达式为真 语句语句N-SN-S结构图结构图结构图结构图
7、N NY Y流程图流程图流程图流程图表表达达式式非非0?语句语句循环控制条件循环控制条件循环控制条件循环控制条件循环体循环体循环体循环体6例如:例如:【例【例5.1】编写程序,求】编写程序,求100个自然数的和个自然数的和即:即:s=1+2+3+100 思路:寻找思路:寻找加数加数与与求和求和的规律的规律 加数加数i i从从1变到变到100,每循环一次,使,每循环一次,使i增增1,直到直到i的值超过的值超过100。i i的的初值初值初值初值设为设为1。求和求和设变量设变量 sum sum 存放和存放和,循环求,循环求sum=sum+isum=sum+i,直至直至i超过超过100。7算法和程序:
8、算法和程序:main()int i,sum;i=1;sum=0;while(i=100)sum=sum+i;i+;printf(sum=%dn,sum);运行运行jc5_1程序输出结果:程序输出结果:sum=5050i i:循环控制变量循环控制变量sumsum:累加器累加器 i=1,sum=0 当当i=100 sum=sum+i i+输出输出sum8注意:注意:l l如果如果while的的(表达式表达式)值为值为0,则循环体,则循环体一次也不执行一次也不执行(例如当例如当i的初值的初值=101)。l l在循环体中必须有使循环趋向结束的操作,在循环体中必须有使循环趋向结束的操作,否则循环将无限进
9、行(否则循环将无限进行(死循环死循环)。)。l l在循环体中,语句的先后位置必须符合逻在循环体中,语句的先后位置必须符合逻辑,否则会影响运算结果。辑,否则会影响运算结果。思考程序段的输出?思考程序段的输出?while(i=100)i+;sum=sum+i;运行后,输出:运行后,输出:运行后,输出:运行后,输出:sum=5150sum=5150原因是什么?原因是什么?原因是什么?原因是什么?9注意(续):注意(续):l l为了保证循环正常运行,应该特别注意:为了保证循环正常运行,应该特别注意:循环控制条件的描述循环控制条件的描述 控制条件的初始状态(初始值)控制条件的初始状态(初始值)循环体内部
10、对控制条件的影响循环体内部对控制条件的影响105.2 do-while语句语句l l语句一般格式语句一般格式 do 语句语句 while(表达式表达式););l l功能:功能:先执行内嵌语句先执行内嵌语句(循环体),之后计算(循环体),之后计算表达式的值,不为表达式的值,不为0(逻辑真)时,再(逻辑真)时,再执行循环体并判断条件,直到表达式的执行循环体并判断条件,直到表达式的值为值为 0 结束循环,转去执行结束循环,转去执行while下面下面的语句。的语句。11 do-while循环的算法循环的算法 循环体循环体当表达式为真当表达式为真N-S结构图结构图NY循环体循环体表达式非表达式非0?流程
11、图流程图main()main()int i=1,sum=0;int i=1,sum=0;do do sum=sum+i;sum=sum+i;i+;i+;while(i=100);while(i=100);printf(%dn,sum);printf(%dn,sum);用用用用do-whiledo-while语句语句语句语句求求求求100100个自然数的和个自然数的和个自然数的和个自然数的和 12说明:说明:l lwhile和和do-while都能实现循环控制,都能实现循环控制,while结构程序通常都可以转换成结构程序通常都可以转换成do-while结构结构l l区别:区别:do-while
12、语句语句先执行循环体再判断条先执行循环体再判断条件,循环体件,循环体至少执行一次至少执行一次;while 语句语句先判断条件再执行循环体,先判断条件再执行循环体,循环体有可能一次也不执行循环体有可能一次也不执行l ldowhile循环体中一定要有能使表达式值循环体中一定要有能使表达式值趋于趋于0的操作的操作(如如i+),否则会出现否则会出现死循环死循环。13do-while语句的简单应用语句的简单应用【例【例5.3】用辗转相除法求】用辗转相除法求m和和n的最大公约数的最大公约数定义定义m、n、rmnT F m和和n交换交换r=m%nm=nn=r 当当r!=0时时输出最大公约数输出最大公约数m1
13、4算法和程序:算法和程序:main()int m,n,r;scanf(%d,%d,&m,&n);if(mn)r=m;m=n;n=r;do r=m%n;m=n;n=r;while(r!=0);printf(%dn,m);运行运行jc5_3程序运行情况如下:程序运行情况如下:程序运行情况如下:程序运行情况如下:24,6024,60 1212155.3 for语句语句 l l语句一般格式语句一般格式 for(表达式表达式1;表达式表达式2;表达式表达式3)语句语句 l l功能:功能:计算表达式计算表达式计算表达式计算表达式1 1的值,再的值,再的值,再的值,再判断表达式判断表达式判断表达式判断表达式
14、2 2,如果其,如果其,如果其,如果其值为非值为非值为非值为非0 0(逻辑真),则执行内嵌语句(逻辑真),则执行内嵌语句(逻辑真),则执行内嵌语句(逻辑真),则执行内嵌语句(循环循环循环循环体体体体),并,并,并,并计算表达式计算表达式计算表达式计算表达式3 3;之后再去判断表达式;之后再去判断表达式;之后再去判断表达式;之后再去判断表达式2 2,一直到其值为,一直到其值为,一直到其值为,一直到其值为0 0时结束循环,执行后续语句。时结束循环,执行后续语句。时结束循环,执行后续语句。时结束循环,执行后续语句。循环初始条件循环初始条件循环初始条件循环初始条件循环控制条件循环控制条件循环控制条件循
15、环控制条件循环体循环体循环体循环体16for语句的算法语句的算法N-S结构图结构图for(表达式表达式1;表达式表达式2;表达式表达式3)语句语句NY流程图流程图计算表达式计算表达式1 语句语句计算表达式计算表达式3表达式表达式2为真为真?例如:例如:例如:例如:main()main()int i,sum;int i,sum;sum=0;sum=0;for(i=1;i=100;i+)for(i=1;i=100;i+)sum=sum+i;sum=sum+i;printf(sum=%dn,sum);printf(sum=%dn,sum);可部分或全部省略,可部分或全部省略,可部分或全部省略,可部分
16、或全部省略,但但但但“;”不可省略不可省略不可省略不可省略17省略省略for语句的表达式语句的表达式 表达式表达式表达式表达式1 1、2 2、3 3全省略,全省略,全省略,全省略,即:即:即:即:for(;)for(;)不设初值、不判断条件(认为表达式不设初值、不判断条件(认为表达式不设初值、不判断条件(认为表达式不设初值、不判断条件(认为表达式2 2为真值),循环变量为真值),循环变量为真值),循环变量为真值),循环变量不增值。无终止的执行循环体。不增值。无终止的执行循环体。不增值。无终止的执行循环体。不增值。无终止的执行循环体。就等同于:就等同于:就等同于:就等同于:while(while
17、(1)1),会会会会无限循环(无限循环(无限循环(无限循环(死循环死循环死循环死循环)注意:在省略某个表达式时,应在适当位置进行循注意:在省略某个表达式时,应在适当位置进行循环控制的必要操作,以保证循环的正确执行环控制的必要操作,以保证循环的正确执行 省略表达式省略表达式省略表达式省略表达式1 1和表达式和表达式和表达式和表达式3 3,即:值给出循环条件即:值给出循环条件即:值给出循环条件即:值给出循环条件 for for(;(;(;(;表达式表达式表达式表达式2 2;);););)就等同于:就等同于:就等同于:就等同于:whilewhile(表达式表达式表达式表达式2 2)省略表达式省略表达
18、式省略表达式省略表达式2 2,即:不判断循环条件,循环无即:不判断循环条件,循环无即:不判断循环条件,循环无即:不判断循环条件,循环无终止的做下去,认为表达式终止的做下去,认为表达式终止的做下去,认为表达式终止的做下去,认为表达式2 2始终为真。始终为真。始终为真。始终为真。forfor(表达式表达式表达式表达式1 1;表达式;表达式;表达式;表达式3 3)就等同于:就等同于:就等同于:就等同于:表达式表达式表达式表达式1;1;while(1while(1)表达式表达式表达式表达式3;3;18(4 4)省略表达式)省略表达式)省略表达式)省略表达式1 1,此时应在,此时应在,此时应在,此时应在
19、FORFOR之前赋初值。注意,之前赋初值。注意,之前赋初值。注意,之前赋初值。注意,省略表达式省略表达式省略表达式省略表达式1 1时,其后的分号不能省略。时,其后的分号不能省略。时,其后的分号不能省略。时,其后的分号不能省略。FORFOR(;(;(;(;表达式表达式表达式表达式2 2;表达式;表达式;表达式;表达式3 3)(5 5)表达式)表达式)表达式)表达式3 3也可以省略,但此时程序设计时应另外也可以省略,但此时程序设计时应另外也可以省略,但此时程序设计时应另外也可以省略,但此时程序设计时应另外保证循环能正常结束。保证循环能正常结束。保证循环能正常结束。保证循环能正常结束。FORFOR(
20、i=1;i=100;)i=1;i=100;)sum=sum+1;sum=sum+1;i+;i+;I+I+的操作不放在的操作不放在的操作不放在的操作不放在FOR FOR 语句的表达式语句的表达式语句的表达式语句的表达式3 3处,而作为循环处,而作为循环处,而作为循环处,而作为循环体的一部分,效果是一样的,都能使循环正常结束。体的一部分,效果是一样的,都能使循环正常结束。体的一部分,效果是一样的,都能使循环正常结束。体的一部分,效果是一样的,都能使循环正常结束。19(6)表达式一般是关系表达式()表达式一般是关系表达式(I=0)或逻或逻辑表达式(辑表达式(ab&xy),但也可以是数值但也可以是数值
21、表达式或字符表达式,只要其值为非零,表达式或字符表达式,只要其值为非零,就执行循环体。书就执行循环体。书120页页20例如:例如:i=1;for(;i100)for(i=1;i100)i+;21说明:说明:l l所有用所有用 while 语句语句实现的循环都可以用实现的循环都可以用for 语句语句实现。实现。等价于:等价于:for(表达式表达式1;表达式表达式2;表达式表达式3)语句;语句;表达式表达式1;while(表达式表达式2)语句;语句;表达式表达式3;22for语句的简单应用语句的简单应用【例【例5.4】求】求n!,即计算即计算p=123n的值。的值。思路:求阶乘与求累加的运算处理过
22、程类似,只要思路:求阶乘与求累加的运算处理过程类似,只要将将“+”变为变为“*”。设置:设置:乘数乘数乘数乘数i i,初值为,初值为1,终值为,终值为n(n是循环控制终是循环控制终值,需要从键盘输入)值,需要从键盘输入)累乘器累乘器累乘器累乘器 p p,每次循环令,每次循环令p=p*i23程序:程序:main()int i,n;long p;p=1;printf(Enter n:);scanf(%d,&n);for(i=1;i=n;i+)p=p*i;printf(p=%ld n,p);思考:思考:思考:思考:如何输出如何输出如何输出如何输出1!,2!,1!,2!,n!n!?如何求如何求如何求如
23、何求s=1!+2!+n!s=1!+2!+n!?运行运行jc5_424熟悉几个循环语句熟悉几个循环语句l lwhile(!x)x+;while(!x)x+;当当当当 x=0 x=0 时,执行循环体时,执行循环体时,执行循环体时,执行循环体x+;x+;l lwhile(c=while(c=getchargetchar()!=n)n=n+1;()!=n)n=n+1;n n 称为称为称为称为计数器计数器计数器计数器,作用是统计输入字符的个数,作用是统计输入字符的个数,作用是统计输入字符的个数,作用是统计输入字符的个数l lwhile(num+=2);while(num+5);do x*=-3;whil
24、e(x5);先执行循环体先执行循环体先执行循环体先执行循环体x*=-3x*=-3,再判断条件再判断条件再判断条件再判断条件(x5)(x5)l lfor(n=0;n26;n+)for(n=0;n26;n+)printfprintf(%c ,n+A);(%c ,n+A);作用是作用是作用是作用是输出输出输出输出2626个大写字母个大写字母个大写字母个大写字母l lfor(sum=0,i=1;i=100;sum=sum+i,i+=2);for(sum=0,i=1;i=100;sum=sum+i,i+=2);作用是作用是作用是作用是计算计算计算计算100100以内的奇数和以内的奇数和以内的奇数和以内的
25、奇数和 256.6循环的嵌套循环的嵌套l l一个循环体内又包含另一个完整的循环结一个循环体内又包含另一个完整的循环结构,称为循环的嵌套。内嵌的循环中还可构,称为循环的嵌套。内嵌的循环中还可以嵌套循环,这就是多层循环。以嵌套循环,这就是多层循环。l l3种循环可以互相嵌套。种循环可以互相嵌套。265.6 循环的嵌套循环的嵌套l l如果循环语句的循环体内又包含了另一条如果循环语句的循环体内又包含了另一条循环语句,则称为循环的嵌套循环语句,则称为循环的嵌套l l例如:例如:#include main()int i,j;for(i=1;i10;i+)for(j=1;j=i;j+)printf(j=i)
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 语言程序设计 课件
限制150内