第4章循环结构程序设计1

上传人:枫** 文档编号:584945593 上传时间:2024-09-01 格式:PPT 页数:30 大小:246.02KB
返回 下载 相关 举报
第4章循环结构程序设计1_第1页
第1页 / 共30页
第4章循环结构程序设计1_第2页
第2页 / 共30页
第4章循环结构程序设计1_第3页
第3页 / 共30页
第4章循环结构程序设计1_第4页
第4页 / 共30页
第4章循环结构程序设计1_第5页
第5页 / 共30页
点击查看更多>>
资源描述

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

1、第4章 循环结构程序设计教学内容教学内容n1 1whilewhile语句语句n2 2do-whiledo-while语句语句n3 3 forfor语句语句n4 4 循环的嵌套循环的嵌套n5 break5 break语句和语句和continuecontinue语句语句n6 6循环结构在案例中的运用循环结构在案例中的运用n请看如下运算式子:请看如下运算式子:1+2+3+4+10=? 1+2+3+4+10=? 123410=?123410=?11+ 22 + 33+2020=11+ 22 + 33+2020=?n思考思考: : 如何编写程序求上面运算如何编写程序求上面运算? ?n特点特点: :有限次

2、的重复执行某种操作。即重复有限次的重复执行某种操作。即重复执行相同或相似的操作。执行相同或相似的操作。第4章 循环结构程序设计n特点:有限次的重复某个操作。特点:有限次的重复某个操作。n在在C C语言中,引入语言中,引入whilewhile语句语句 、do-whiledo-while语语句和句和 forfor语句循环结构来处理此类问题。语句循环结构来处理此类问题。n1 While1 While结构:结构:While (While (条件表达式)条件表达式) 语句序列;语句序列;循环结构程序设计#include void main()int s=0,i=1; while(i=10) s=s+i;

3、 i+; printf(%d, s);开始开始S=0;i=1S=0;i=1i=10?i=10?S=S+i输出输出S S的值的值结束结束 i i i+1+1YN例例1:1:求求1+2+31+2+3+10+10循环体循环体循环控制条件,循环控制条件,i为循环控制变量为循环控制变量对循环控制变量的修正对循环控制变量的修正int S=0,i=1;While(i=10) S=S+i; i+; 例例1 1:(ch6_001Ach6_001A)1 while语句语句1 while语句语句1 1、循环条件:循环条件:循环结构中的条件表达式循环结构中的条件表达式. .如如while (i=10)while (i

4、=10)其中,其中,i=10i=10就是循环就是循环条件。循环条件表达式非条件。循环条件表达式非0 0,就做一次循,就做一次循环体。环体。2 2、循环体循环体:在每个循环周期均要执行一次:在每个循环周期均要执行一次的语句序列。如的语句序列。如whilewhile下下用用 括起来的括起来的语句序列。语句序列。3 3、循环控制变量循环控制变量:能够决定循环控制条件能够决定循环控制条件是真是假的量。是真是假的量。循环结构的三个术语:循环结构的三个术语:1 while语句语句n要要写出一个正确的循环结构,对控制变量要做三方写出一个正确的循环结构,对控制变量要做三方面的工作:面的工作:n1 1、对循环控

5、制变量赋初值(、对循环控制变量赋初值(while语句之前赋予)语句之前赋予)。n2 2、将循环控制变量写入正确的控制条件。、将循环控制变量写入正确的控制条件。n3 3、对循环控制变量值的更新、对循环控制变量值的更新, ,避免死循环。避免死循环。如: s=0;i=1; /* 给给i赋初值赋初值 */ while(i10) /*循环条件循环条件*/ s=s+i; i+; /*对对i的值做更新、调整的值做更新、调整*/ 练习练习1:求:求n!练习练习2:求:求100以内的奇数和、偶数和。以内的奇数和、偶数和。2 Dowhile语句语句nWhileWhile语句表达的是语句表达的是“当满足条件的时候,

6、做当满足条件的时候,做某事某事”nDowhileDowhile语句表达的是语句表达的是“做某事,直到不满做某事,直到不满足条件的时候为止足条件的时候为止”nDowhile Dowhile 结构:结构:DoDo 语句序列;语句序列; While (While (表达式)表达式); ;分号不能漏!分号不能漏!2 Dowhile语句语句例:例: s=0;i=1; do s=s+i; i+; while (i1);S=0;i=1;While(i1) S=S+i; i+; While与与do-while的比较:的比较:当当while后面的表达式一开始就为假的时候,后面的表达式一开始就为假的时候,whil

7、e结构的循环体一次也不执行,而结构的循环体一次也不执行,而do_while的循环体要的循环体要执行执行一次。一次。S=1S=02 Dowhile语句语句n例例2 2:从键盘输入任意字符,直到输入:从键盘输入任意字符,直到输入!时结束,并统计字符的个数(不包括时结束,并统计字符的个数(不包括!) ) /* ch6_002A 用用while语句实现语句实现#include void main()char c; int n=0; c=getchar(); while(c!=!) c=getchar(); n+; printf(n=%dn,n);/* ch6_002B用用do while语句实现语句实

8、现*/#include void main()char c; int n=0;do c=getchar(); n+; while(c!=!); printf(n=%dn,n-1);2、do-while 语句语句 对对do-while语句的说明语句的说明循环变量的初值在循环变量的初值在do-while语句之前赋予。语句之前赋予。循环体可以是一条简单语句,也可以是多条用循环体可以是一条简单语句,也可以是多条用 的语句块。的语句块。循环体内一定要有修改循环条件的语句,否则容易循环体内一定要有修改循环条件的语句,否则容易导致死循环。导致死循环。循环体至少执行一次。循环体至少执行一次。while表达式后

9、必须加分号。表达式后必须加分号。循环结构应用循环结构应用n例例6 6:猜数游戏:猜数游戏n编写一道猜数的程序,在程序中预设编写一道猜数的程序,在程序中预设一个数字,要求用户任意从键盘输入一个数字,要求用户任意从键盘输入一个价格(数字),由程序在屏幕上一个价格(数字),由程序在屏幕上给出给出“高了高了”或者或者“低了低了”的提示,的提示,当用户输入数字等于目标数,程序结当用户输入数字等于目标数,程序结束束。 猜数猜数输入一个数字输入一个数字datadataDatagoal?Datagoal?输出提示信息:输出提示信息:高了高了, ,请重新输入请重新输入Datagoal?Datagoal?输出提示

10、信息:输出提示信息:低了请重新输入低了请重新输入输出提示信息:输出提示信息:恭喜你答对了恭喜你答对了结束结束开始开始DataData不等于不等于goal?goal?YYNNYN/*例例6:猜数游戏:猜数游戏用用do while语句实现语句实现。 */#define GOAL 648 #include void main() int data;do printf(请输入数字请输入数字:n); scanf(%d,&data); /输入任意一个数字到输入任意一个数字到data if (dataGOAL) printf(高了高了!n); else if(dataGOAL) printf(低了低了!n)

11、; else printf(恭喜你,答对了恭喜你,答对了! ); while (data!=GOAL); /*例例6:猜数游戏。:猜数游戏。 用用while语句实现语句实现*/#define GOAL 648 #include void main() int data; printf(请输入数字请输入数字:n); scanf(%d,&data); /输入任意一个数字到输入任意一个数字到data while (data!=GOAL) if (dataGOAL) printf(高了高了!n); else printf(低了低了!n); printf(请输入数字请输入数字:n); scanf(%d,

12、&data); /输入任意一个数字到输入任意一个数字到data/ printf(恭喜你,答对了恭喜你,答对了! ); nC C语言中语言中forfor循环能更好地体现循环的上述循环能更好地体现循环的上述三个要点:(循环控制变量的三个要点:(循环控制变量的初始化、初始化、循循环控制环控制条件条件、循环控制变量的、循环控制变量的更新更新)nfofor r结构:结构:3 for循环循环for(初始化表达式;判断条件表达式初始化表达式;判断条件表达式2;表达式;表达式3) 循环体循环体 表达式表达式3主要进行循环的调整,如改变循环变量的值等主要进行循环的调整,如改变循环变量的值等3个表达式之间用分号分

13、隔,但表达式个表达式之间用分号分隔,但表达式3后无分号后无分号给循环控制变量和相关变给循环控制变量和相关变量赋初值量赋初值循环条件循环条件对循环控制变量进对循环控制变量进行修正行修正3 for循环循环n例如;例如;1+2+10的累加和的程序段可改的累加和的程序段可改写为用写为用for结构完成,结构完成,结构显得更为紧凑结构显得更为紧凑(ch6_001C) n for(i=1,s=0;i=10;i+) s=s+i; 循环体循环体几点说明:几点说明:1、表达式表达式1和表达式和表达式3可为逗号表达式可为逗号表达式 如如 for (i=0, j=1 ; jn & in ; i+, j+) 3 for

14、循环循环2、若表达式、若表达式1里的循环控制变量已经有初值,则表达式里的循环控制变量已经有初值,则表达式1可省略,但可省略,但分号不能省分号不能省。若循环体语句中有循环控制变量。若循环体语句中有循环控制变量的修正语句,可省略表达式的修正语句,可省略表达式3。如如 i=1,s=0 ; for (; i=10; ) s+=i; i+; 3、省略表达式、省略表达式2,则为死循环,除非在语句中有条件用,则为死循环,除非在语句中有条件用break, return, goto, 或或exit( )函数。函数。3 for循环循环n例例2 2:从键盘输入任意字符,直到输入:从键盘输入任意字符,直到输入!时结束

15、,并统计字符的个数(不包括时结束,并统计字符的个数(不包括!) ) ( (使用使用forfor结构)结构)#include stdio.hvoid main()int n; for(n=0;getchar()!=!;n+) ; printf(n=%dn,n);此处循环体为一条空语句此处循环体为一条空语句循环程序设计循环程序设计n内容回顾内容回顾nWhile(While(条件)条件) 循环体循环体nDoDowhile(while(条件)条件); ;nFor(For(初始化表达式初始化表达式; ;条件条件; ;修正表达式)修正表达式)求求a1+a2+a3+an的和的和算法:算法:循环条件:循环条件

16、:循环变量初值:循环变量初值:i=1循环条件判断:循环条件判断:i=n循环体:循环体:sum=sum+ai,sum(初始值为(初始值为0)为所求的和,)为所求的和,ai为通项(即累加的项)。为通项(即累加的项)。循环结构应用循环结构应用-对于累加求和问题的解决方法对于累加求和问题的解决方法例例3:编写程序求:编写程序求1+1/2+1/3+1/n的和。的和。n从键盘输从键盘输入。入。算法:算法:属于累加求和的问题。属于累加求和的问题。通项通项ai=1.0/i。求和公式为求和公式为sum=sum+ai,即即sum=sum+1.0/i。(sum的初值为的初值为0,i从从1到到n变化)变化)注意:注意

17、:sum的数据类型不能定义为整型。的数据类型不能定义为整型。循环结构应用循环结构应用#includemain( ) int n,i; i=1;double sum=0;scanf(%d,&n);while (i=n) sum=sum+1.0/i; i+; printf(sum=%lfn,sum);例例3程序如下:程序如下:循环结构程序设计简单示例循环结构程序设计简单示例例例4 计算计算1!+2!+3!+4!+n!,n从键盘输入。从键盘输入。算法:算法:属于累乘、累加的问题。属于累乘、累加的问题。通项通项ai=i!,无法用,无法用i直接表示,需要计算,因此定义直接表示,需要计算,因此定义一个变量

18、一个变量p表示通项,用累乘的方法计算表示通项,用累乘的方法计算p。p=p*i。(。(i从从1到到n变化,变化,p的初值为的初值为1)求和公式为求和公式为sum=sum+p。(。(i从从1到到n变化,变化,sum的初值为的初值为0)注意:注意:p、sum的数据类型定义为的数据类型定义为float或或double。循环结构程序设计简单示例循环结构程序设计简单示例例例4 程序(循环次数已知,用程序(循环次数已知,用for循环)循环)#includemain( )inti,n;doublep=1,sum=0;scanf(%d,&n);for(i=1;i=n;i+)p=p*i;sum=sum+p;pri

19、ntf(sum=%lfn,sum);例例5 计算计算 的近似值,直到最后一项的绝对值小于的近似值,直到最后一项的绝对值小于0.0000010.000001 。 /4 =1-1/3+1/5-1/7+算法:算法:属于累加求和的问题。属于累加求和的问题。通项通项ai直接用直接用i来表示比较复杂,定义一个变量来表示比较复杂,定义一个变量t表表示通项,示通项,t=s/n(s表示符号,初值为表示符号,初值为1,n表示分母,表示分母,初值为初值为1,t的初值为的初值为1)求和公式为求和公式为pi=pi+t(pi的初值为的初值为0,t的绝对值大于的绝对值大于或等于或等于0.0000010.000001 )注意

20、:注意:t、pi的数据类型为的数据类型为float或或double。循环结构应用循环结构应用#include#includevoid main( )ints=1;floatpi=0,t=1,n=1;while(fabs(t)=1e-6) pi=pi+t;s=-s;n=n+2;t=s/n;printf(pi=%.6fn,4*pi);例例5 程序(循环次数未知,用程序(循环次数未知,用while循环)循环)累加和问题累加和问题例例17计算:计算:s=1+12+123+1234+12345分析:累加和问题关键是写出通项的表达式分析:累加和问题关键是写出通项的表达式n用用i表示累加的项数,表示累加的项数,i=5nt表示通项,其规律为后项是前项乘表示通项,其规律为后项是前项乘10加加i,即,即t=t*10+i; nt,s的初始值都设为的初始值都设为0void main() int t=0,s=0,i; for( i=1; i=5; i+) t=t*10+i; s=s+t; printf(s=%dn,s);

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 医学/心理学 > 基础医学

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