第5讲 循环结构程序设计.ppt_第1页
第5讲 循环结构程序设计.ppt_第2页
第5讲 循环结构程序设计.ppt_第3页
第5讲 循环结构程序设计.ppt_第4页
第5讲 循环结构程序设计.ppt_第5页
已阅读5页,还剩39页未读 继续免费阅读

下载本文档

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

文档简介

1、1,上一讲内容回顾,关系运算符: 、=、= 运算优先级相同,自左至右 =、!= 运算优先级相同,但低于上述4个 逻辑运算符: !、,(2) If (a) printf(%dn,a);,(3) Int a=1,y=10; If (a=0) y-; Else if (a0) y+; Else y+=y; Printf(y=%dn,y);,y=20,5,if选择结构的注意事项,在if语句的三种形式中,所有的语句应为单个语句,如果要想在满足条件时执行一组(多个)语句,则必须把这一组语句用括起来组成一个复合语句。但要注意的是在之后不能再加分号。,例:输入3个数,按由小到大的顺序输出。,main() fl

2、oat a,b,c,t; scanf(“%f,%f,%f”, ,6,if语句的嵌套,一般形式,if ( ),if ( ) 语句1 else 语句2,else,if ( ) 语句3 else 语句4,内嵌if,内嵌if,else总是与它前面最近的if配对,举例,If ( ) if ( ) 语句1 else if ( ) 语句2 else 语句3,if ( ) 语句1,else, if ( ) 语句1 ,If ( ),7,举例,#include main() int x,y; scanf(%d, ,运行验证if与else匹配关系.c,8,switch选择结构,当switch表达式的值与某个case

3、常量表达式的值相等,就执行该case后面的语句,若没有与之相匹配的常量表达式,则执行default后面的语句。 Case常量表达式只是起语句标号的作用,并不在该处进行条件判断。 若case子句后没有break语句,将顺序向下执行各case子句。,switch (表达式) case 常量表达式1:语句1; break; case 常量表达式2:语句2; break; case 常量表达式m:语句m; break; default:语句n; break; ,9,switch选择结构,switch语句只有与break语句相结合,才能设计出正确的多分支结构程序。 使用switch语句的关键是构造正确的

4、表达式。,10,例如:计算分段函数值,采用switch多分支选择结构来实现, 如何构造switch语句的表达式?,构造表达式如下: K=1*(x=2 int k; scanf(%f, ,12,12,第5讲,循环结构程序设计,13,13,程序设计中需要解决的问题(1),计算1+2+3+ +1000的值,已知求y的公式 ,求y3时的最大n值及对应的y值,求sinx,直到最后一项的绝对值小于10-6时,停止计算。, 输入20个数,求出其中的最大值和最小值,14,程序设计中需要解决的问题(2),14,输入一个整数m,判断是否为素数(质数), 输入两个整数,求这两个数的最大公约数,最小公倍数, 求f(x

5、)在a,b上的定积分, 用牛顿迭代法求下面方程在x=2.5附近的实根,直到满足|xn-xn-1|10-6为止,分析这些问题的共性: 初始条件 终止条件 在初始条件和终止条件间重复做某件事情,15,15,本讲主要内容,本讲小结,1. 循环结构的几种形式,16,1 循环结构的几种形式(1),1.1 while循环结构,循环初始条件,循环体,作循环条件,i=1;p=1; while (i=5) p=p*i; i=i+1; ,while (表达式) 语句,课堂练习: 求p=5!,用while语句描述,17,1 循环结构的几种形式(2),1.2 do-while循环结构,do 语句 while (表达式

6、);,课堂练习: 求p=5!,用dowhile语句描述,结论:dowhile语句 与while语句可以 通过修改程序, 互相转换,p=1; i=1; do p=p*i; i=i+1; while(i=5);,18,1 循环结构的几种形式(3),1.3 for循环结构,for (表达式1;表达式2;表达式3) 语句,课堂练习: 求p=5!,用for语句描述 p=1; for(i=1;i=5;i+) p=p*i;,课堂练习: 用while语句写出左边流程图的C语句描述,表达式1; while(表达式2) 语句 表达式3; ,19,1 循环结构的几种形式(4),例1:计算s=1+2+3+ +1000

7、的值,输入,处理,输出,实现过程分析:,20,1 循环结构的几种形式(5),1.4 几种循环结构的应用(续),续例1:计算s=1+2+3+ +1000的值,处理过程使用哪种结构?,循环初始条件,循环体,循环终止条件,请同学们分别用 while、 do.while、 for 循环结构实现,21,1 循环结构的几种形式(6),1.4 几种循环结构的应用(续),例2:已知求y的公式 ,求y3时的最大n值及对应的y值,输入,处理,输出,22,1 循环结构的几种形式(7),1.4 几种循环结构的应用(续),例2:(续),循环初始条件,循环体,循环终止条件,考虑本例循环终止 条件与例1的不同?,23,1

8、循环结构的几种形式(8),1.4 几种循环结构的应用(续),例2:(续),本例应使用哪种循环结构?,总结:dowhile语句和while语句多用于循环次数不确定的情况,而对于循环次数确定的情况,用for语句更适合。,24,1 循环结构的几种形式(9),例2的while语句实现,循环初始条件 y=0 n=1,循环体 y=y+1.0/(2*n-1) n=n+1,作循环的条件 y3,#include void main() ,int n=1; float y=0.0;,while(y3) ,y=y+(float)1.0/(2*n-1); n=n+1;,printf(y=%f,n=%dn,y,n-1)

9、;,分析程序中的问题!,求y3时的最大n值及对应的y值,25,1 循环结构的几种形式(10),#include void main() int n=1; float y=0.0,f; while(y3) f= (float)1.0/(2*n-1); y=y+f; n=n+1; printf(y=%f,n=%dn,y-f,n-2); ,例2的dowhile语句实现,do f= (float)1.0/(2*n-1); y=y+f; n=n+1; while(y3);,26,1 循环结构的几种形式(11),1.4 几种循环结构的应用(续),例3:求sinx,直到最后一项的绝对值小于10-6时,停止计

10、算。,实现过程分析:,找出ai与ai-1项之间的关系,27,1 循环结构的几种形式(12),例3 分析,循环初始条件,循环体,循环终止条件,需要将输入的 角度转换为弧度,我们共同完成这个程序的编写,返回主菜单,28,2 与循环有关的控制语句(1),2.1 break语句,在哪里见过break语句?它的作用是什么?,switch (表达式) case 常量表达式1:语句1; break; case 常量表达式2:语句2; break; case 常量表达式m:语句m; break; default:语句n; break; ,break语句的两个用途: 在switch语句中用来使流程跳出switc

11、h结构,继续执行switch语句后面的语句。 用在循环体中,迫使所在循环立即终止,即跳出循环体,继续执行循环结构后面的语句。,29,2 与循环有关的控制语句(2),2.1 break语句举例,例4:求两个整数a和b的最大公约数和最小公倍数,假设m为a和b的最大公约数,则a和b的最小公倍数为a*b/m,如何求最大公约数?,30,2 与循环有关的控制语句(3),2.1 break语句举例(续),例4:求两个整数a和b的最大公约数和最小公倍数,方法1:,P103程序,31,2 与循环有关的控制语句(4),2.1 break语句举例(续),例4:求两个整数a和b的最大公约数和最小公倍数,方法2: 辗转

12、相除法,P103算法描述,32,2 与循环有关的控制语句(2),2.2 continue语句,continue语句的作用是结束本次循环,课堂练习: 分析程序的功能和执行结果。,#include void main() int i=0,s=0; do if(i%2)i+;continue; i+; s=s+i; while(i7); printf(“%dn”,s); ,16,#include void main() int i=0; while(i10) if(i1) continue; if(i=5) break; i+; ,课堂练习: 分析程序的循环次数,死循环,程序的功能: 1+3+5+7

13、,33,2 与循环有关的控制语句(3),2.2 goto语句,goto语句可以转向同一函数内任意指定位置执行,称为无条件转移语句。,语句格式:goto 语句标号;,#include void main() int i , k=0; for (i=1;i+) k+; while (ki*i) k+; if(k%3=0) goto loop; loop: printf(“%d,%d”,i,k); ,课堂练习: 分析程序执行结果,2,3,返回主菜单,34,34,3 循环结构程序举例(1),例5:输入一个整数m,判断是否为素数,问题分析:根据素数的定义,用m分别对2到m-1的整数进行求模的运算,如果中

14、间出现余数为0的情况,则m不是素数,否则,m为素数。,根据此流程图 是否可以写出程序?,35,3 循环结构程序举例(2),例6:求f(x)在a,b上的定积分,解题思路:将区间a,b进行n等分,转化为求n个梯形的面积的和,n值越大,结果越准确。,36,3 循环结构程序举例(3),例6(续),输入,处理,输出,程序实现见教材P110,37,总结,循环结构中常用的算法: 递推法(教材例5.6) 迭代法(教材例5.15) 穷举法(教材例5.16) 回溯法(教材例5.17),38,例5.6 递推法求斐波那契数列,Fibonacci数列: 1 1 2 3 5 8 13 21,程序实现见教材P99,39,例5.15 用牛顿迭代法求方程的根,用牛顿迭代法求下面方程在x=2.5附近的实根,直到满足|xn-xn-1|10-6为止,解题思路:牛顿迭代法的实质是以切线与x 轴的交点作为曲线与x 轴交点的近似值以逐步逼近,40,例5.15 用牛顿迭代法求方程的根,牛顿迭代公式,程序实现见教材P111,41,例5.16 用穷举法求解,例5.16 将1元钱换成1分、两分、5分的硬币有多少种方法。,x+2y+5z=100,分析:,假设:1分硬币数为x,x的取值范围0,100 2分硬币数

温馨提示

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

评论

0/150

提交评论