资源预览内容
第1页 / 共30页
第2页 / 共30页
第3页 / 共30页
第4页 / 共30页
第5页 / 共30页
第6页 / 共30页
第7页 / 共30页
第8页 / 共30页
第9页 / 共30页
第10页 / 共30页
亲,该文档总共30页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述
第4章 循环结构程序设计,教学内容 1while语句 2do-while语句 3 for语句 4 循环的嵌套 5 break语句和continue语句 6循环结构在案例中的运用,请看如下运算式子: 1+2+3+4+10=? 123410=? 11+ 22 + 33+2020=? 思考: 如何编写程序求上面运算? 特点:有限次的重复执行某种操作。即重复执行相同或相似的操作。,第4章 循环结构程序设计,特点:有限次的重复某个操作。 在C语言中,引入while语句 、do-while语句和 for语句循环结构来处理此类问题。,1 While结构: While (条件表达式) 语句序列;,循环结构程序设计,开始,S=0;i=1,i=10?,输出S的值,结束,例1:求1+2+3+10,1 while语句,1、循环条件:循环结构中的条件表达式.如while (i=10)其中,i=10就是循环条件。循环条件表达式非0,就做一次循环体。 2、循环体:在每个循环周期均要执行一次的语句序列。如while下用 括起来的语句序列。 3、循环控制变量:能够决定循环控制条件是真是假的量。,循环结构的三个术语:,1 while语句,要写出一个正确的循环结构,对控制变量要做三方面的工作: 1、对循环控制变量赋初值(while语句之前赋予)。 2、将循环控制变量写入正确的控制条件。 3、对循环控制变量值的更新,避免死循环。,如: s=0;i=1; /* 给i赋初值 */ while(i10) /*循环条件*/ s=s+i; i+; /*对i的值做更新、调整*/ ,练习1:求n! 练习2:求100以内的奇数和、偶数和。,2 Dowhile语句,While语句表达的是“当满足条件的时候,做某事” Dowhile语句表达的是“做某事,直到不满足条件的时候为止” Dowhile 结构:,Do 语句序列; 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后面的表达式一开始就为假的时候,while结构的循环体一次也不执行,而do_while的循环体要执行一次。,S=1,S=0,2 Dowhile语句,例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语句实现*/ #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表达式后必须加分号。,循环结构应用,例6:猜数游戏 编写一道猜数的程序,在程序中预设一个数字,要求用户任意从键盘输入一个价格(数字),由程序在屏幕上给出“高了”或者“低了”的提示,当用户输入数字等于目标数,程序结束。,猜数,输入一个数字data,Datagoal?,输出提示信息: 高了,请重新输入,Datagoal?,输出提示信息: 低了请重新输入,输出提示信息: 恭喜你答对了,结束,开始,Data不等于goal?,Y,Y,N,N,Y,N,/*例6:猜数游戏用do while语句实现。 */ #define GOAL 648 #include void main() int data; do printf(请输入数字:n); scanf(%d, ,/*例6:猜数游戏。 用while语句实现*/ #define GOAL 648 #include void main() int data; printf(请输入数字:n); scanf(%d, ,例18输入一行字符,分别统计出其中英文字母、空格、数字和其它字符的个数。,程序代码如下: #include void main() char c; int letters=0,space=0,digit=0,others=0; printf(please input some charactersn); while(c=getchar()!=n) if(c=a,C语言中for循环能更好地体现循环的上述三个要点:(循环控制变量的初始化、循环控制条件、循环控制变量的更新) for结构:,3 for循环,for(初始化表达式;判断条件表达式2;表达式3) 循环体 ,表达式3主要进行循环的调整,如改变循环变量的值等 3个表达式之间用分号分隔,但表达式3后无分号,3 for循环,例如;1+2+10的累加和的程序段可改写为用for结构完成,结构显得更为紧凑(ch6_001C) for(i=1,s=0;i=10;i+) s=s+i;,几点说明: 1、表达式1和表达式3可为逗号表达式 如 for (i=0, j=1 ; jn i+, j+),3 for循环,2、若表达式1里的循环控制变量已经有初值,则表达式1可省略,但分号不能省。若循环体语句中有循环控制变量的修正语句,可省略表达式3。 如 i=1,s=0 ; for (; i=10; ) s+=i; i+; 3、省略表达式2,则为死循环,除非在语句中有条件用break, return, goto, 或exit( )函数。,3 for循环,例2:从键盘输入任意字符,直到输入!时结束,并统计字符的个数(不包括!) (使用for结构),#include stdio.h void main() int n; for(n=0;getchar()!=!;n+) ; printf(n=%dn,n); ,此处循环体为一条空语句,循环程序设计,内容回顾 While(条件) 循环体 Dowhile(条件); For(初始化表达式;条件;修正表达式),求a1+a2+a3+an的和 算法: 循环条件: 循环变量初值: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变化) 注意:sum的数据类型不能定义为整型。,循环结构应用,#include main( ) int n,i; i=1; double sum=0; scanf(%d,例3程序如下:,循环结构程序设计简单示例,例4 计算1!+2!+3!+4!+n!,n从键盘输入。 算法: 属于累乘、累加的问题。 通项ai=i!,无法用i直接表示,需要计算,因此定义一个变量p表示通项,用累乘的方法计算p。 p=p*i。(i从1到n变化,p的初值为1) 求和公式为sum=sum+p。(i从1到n变化,sum的初值为0) 注意:p、sum的数据类型定义为float或double。,循环结构程序设计简单示例,例4 程序(循环次数已知,用for循环) #include main( ) inti,n; doublep=1,sum=0; scanf(%d, ,例5 计算的近似值,直到最后一项的绝对值小于0.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.000001 ) 注意:t、pi的数据类型为float或double。,循环结构应用,#include #include void 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 分析:累加和问题关键是写出通项的表达式 用i表示累加的项数,i=5 t表示通项,其规律为后项是前项乘10加i,即t=t*10+i; t,s的初始值都设为0 void main() int t=0,s=0,i; for( i=1; i=5; i+) t=t*10+i; s=s+t; printf(s=%dn,s); ,
收藏 下载该资源
网站客服QQ:2055934822
金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号