《流程控制语句》PPT课件.ppt_第1页
《流程控制语句》PPT课件.ppt_第2页
《流程控制语句》PPT课件.ppt_第3页
《流程控制语句》PPT课件.ppt_第4页
《流程控制语句》PPT课件.ppt_第5页
已阅读5页,还剩35页未读 继续免费阅读

下载本文档

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

文档简介

第四章 流程控制语句 (2),2011-3-29,王卫红/曹玉辉,流程控制语句用来控制程序的执行过程,它包括以下三种语句:,选择:用来解决实际应用中按不同情况进行不同处理的问题.包括: if语句 和 switch语句,循环:用来解决实际应用中需要重复处理的问题. 包括: for语句、 while语句 和 do语句,跳转:用来改变顺序向下执行的正常顺序.包括:goto 、continue 、break 和 return语句,表达式,语 句,真,假,一、if语句的简单分支,语句:if(表达式) 语 句,表达式为任意表达式,若有多条语句,则要构成复合语句,执行:计算 表达式的值,若为真(不为0) 则执行语句;否则不执行语句,二、if语句的双分支,if(表达式) 语句1 else 语句2,表达式,语句 1,语句2,真,假,入口,出口,执行:,若表达式的值不为0,执行语句1,否则执行语句2,语句:,嵌套的两种形式: (1) 嵌套 ifelse (2) 嵌套 else if,三、if 语句的嵌套(处理多分支问题),(1) 嵌套 ifelse,if(表达式1),if(表达式3)语句1;,if(表达式2),else 语句2 ;,else 语句3 ;,else 语句4;,外层,内层,中层,若表达式1的值为非0 ,即真,则执行中层ifelse结构;否则,执行语句4。 执行中层时,若表达式2的值为非0 ,即真,则执行内层ifelse结构;否则,执行语句3。 执行内层时,若表达式3的值为非0 ,即真,则执行语句1;否则,执行语句2。,if(表达式1) 语句1; else if(表达式2) 语句2; else if(表达式3) 语句3; . else if(表达式n) 语句n; else 语句n+1 ; /*前面n个条件均 不成立,执行语句n+1*/,(2)嵌套 else if,形式:,switch (表达式) case 常量表达式1:语句序列1; case 常量表达式2:语句序列2; case 常量表达式n:语句序列n; default:语句序列n+1; ,四、 switch 语句是多分支选择语句,switch 通常与break语句联用:break用于中断或结束语句(只能用在switch语句和循环语句中),分支(选择)结构小结,1、if语句的简单分支,2、if语句的双分支:if -else 3、if的嵌套 4、switch 语句的使用,书中例题:P80(2) P81(3)、 P85(2) P86(3),4.3 4.5 循环结构,一、 for 语句*,二、 while语句*,三、 do - while 语句*,主要学习语句的执行过程、使用方法,循环:重复执行一段语句,格式,for( 表达式1;表达式2;表达式3) 语句,表达式2,语句,表达式1,表达式3,表达式1:作为初始化,先执行表达式1的值; 再执行表达式2,如果值为真,执行语句,再执行表达式3,重复; 如果表达式2的值为假,退出循环,继续执行下面的语句。,执行情况,真,假,表达式2:作为循环控制,是循环条件,表达式3:每次都要做 ,改变循环变量,4.3 for语句(计数式型循环),for(循环变量赋初值;循环条件;循环变量增值) 语句,for (s=0,i=1;i=100;i+) s+=i;,注意:,这三个表达式都可以忽略,但分号 不能省 for(;),不能构成死循环,死循环只能用ctrl+c强行中止,所以源程序编辑后应先存盘。,for循环最常见格式:,例4.3.1:求n!(n的值由键盘输入),#include void main() int n; double s=1.0; coutn; for(int i=1;i=n;i+) s*=i; coutn“!=“sendl; ,例4.3.2:输入一个数,判断是否为素数,#include void main() int n,i; cinn; for (i=2;in;i+) if (n%i= =0) break; if (i= =n) cout“nYes”; else cout“nNo”; ,例4.3.3:打印一九乘法表。,1*1=1 1*2=2 1*3=3 1*9=9,#include void main() int i=1,j; cout“n”; for(j=1;j=9;j+) couti“*”j“=“i*j; ,int i,j; for(i=1;i=9;i+) cout“n”; for(j=1;j=9;j+) /*循环嵌套*/ couti“*”j“=“i*j“t”; ,int i,j; for(i=1;i=9;i+) cout“n”; for(j=1;j=i;j+) /*循环嵌套*/ couti“*”j“=“i*j“t”; ,1*1=1 2*1 =2 2*2=4 3*1=3 3*2=6 3*3=9 4*1=4 4*2=8 4*3=12 4*4=16 9*1=9 9*2=18 9*3=27 9*4=36 .,循环嵌套,内循环 外循环,嵌套不能有交叉,在循环嵌套中,break语句只能退出一层循环,双重for循环的执行过程: 例4.3.4:求1!+2!+3!+5!,#include void main() int i,j; long int s=0,m; for(i=1;i=5;i+) m=1; for(j=1;j=i;j+) m*=j; s+=m; coutsendl; ,m=1;,s=0;,当 i=5,当j=i,m*=j; j+;,s+=m; i+;,coutsendl;,#include 10 s=0; void main() 20 for(i=1;i=3;i+) int i,j; 30 m=1; long int m,s; 40 for(j=1;j=i;j+) 50 m*=j; 60 s+=m; 70 coutsendl; ,10,20,30,40,50,60,m=1,s=0,i=1,j=1,m =1*1,s= 0+ 1,i=2,j=1,m=1,m =1*1,j=2,m =1*2,s= 1+ 2,i=3,j=1,j=2,j=4,m=1,m =1*1,m =1*2,m =2*3,s= 3+ 6,70,s= 9,i=4,外走一 内走遍,j=2,j=3,j=3,例4.3.5:打印出100到200之间的素数,#include void main() int i , j; for ( i=100 ; i=i) cout“t” i; ,#include void main() int i,j,n,m; long s=0,t; cinnm; for (i=1;i=n;i+) t=1; for (j=1;j=m;j+) t*=i*2-1; s+= t; couts“n”; ,例4.3.6: 1m+3 m +5 m +7 m +.,返回,格式:while(表达式) 语句,执行过程:先求表达式的值,判断为真为假, 若为真,则执行语句;否则退出循环。,注意:,语句:一个语句,不是语句序列 表达式后面不能有分号,4.4 while 语句(条件循环),例4.4.1:求1+2+3+100的和,#include void main() int s,i; s=0; /* s为累加和 */ i=1; /* i为循环控制变量 */ while ( i=100 ) /* 循环条件 */ s+=i ; i+; couts; ,#include void main() int s,i; 10: s=0; 20: i=1; 30: while ( i=4 ) 40: s+=i ; 50: i+; 60: couts; ,s=0,循环过程如下:,10,20,40,30,50,60,i=1,s=0+1,i=2,1,s=1+2,i=3,1,1,i=4,s=3+3,0,s=6+4,i=5,s=10,1,例4.4.2: 编程求 的近似值, 公式 /4 1-1/3+1/5-1/7+1/9-,#include #include void main( ) int s; float n , t , pi ; s=1 ; n=1; t=1; pi=0; while ( fabs(t)1e-6 ) pi=pi+t ; n=n+2; s=-s; t=s/n; pi=4*pi ; cout“ pi=” pi “n”; ,分析: 题目仍可以看成是累加求和 不同的是, 相加的每一项正负相间, 公式是无穷的, 所以我们规定当 相加项的绝对值小于0.000001 (即106 )时停止计算,1,1,-1,3,-1/3,1,0,1,0.67,1/5,5,1,返回,格式,do 语句 while (表达式),执行情况:,先执行语句,再计算表达式的值,若非0,再执行语句;否则退出循环,执行下面的语句,do后若有多条语句,需使用复合语句,语句至少被执行一次,不同于while语句,注意,4.5 do-while语句(直到型循环),;,while 语句与do-while语句(求1到100的累加和),#include void main() int s,i; s=0; cini; while ( i=100 ) s+=i ; i+; couts; ,#include void main() int s,i; s=0; cini; do s+=i ; i+; while ( i=100 ); couts; ,输入:101,输出:0,输出:101,输入:101,三种循环语句的比较:,for和 while语句是先判断循环条件再执行循环体,而do循环是先执行循环体,然后再判断,依次反复进行下去,直到循环条件的值为假时止,所以,for和 while的循环体可能一次也不执行;而do语句的循环体至少执行一次。,一般情况下,它们之间可以相互转换,编程时可 以任选使用,通常使用for循环较简单。,在任一种循环的循环体内都可以使用break语 句使之终止循环的执行,使用continue语句结束一次循环体的执行。,循环结构小结,一、 for 语句*,二、 while语句*,四、循环的嵌套,三、 do - while 语句*,书中例题:P92(4) 、P95(3)、 P97(2) P99(1)、 P103(1),返回,用来改变顺序向下执行的正常顺序.包括:goto 、 break 、 continue和 return语句,4.6 跳转语句,一、 goto 语句 格式:goto 语句标号; (注:语句标号后加:号) 功能:无条件转向语句。 如: goto loop;,二、break 语句,只用于switch语句和循环中,用在循环中,用来中止循环,提前跳出循环体,#include void main() int i=1,s=0; while (i=2000) break; s+=i; i+; cout“s=“s “i=”i; ,例4.6.1:,结果:s=2016 i=64,三、continue 语句,只能用在循环中,continue通常与if语句结合,一同用于循环结构,注意:与break语句的区别,continue:结束本次循环,继续下次循环 break : 中止循环的进行,1. break语句 : 中止循环或switch结构 2. continue语句 : 结束本次循环, 然后再根据是否满足 条件来决定是否执行下次循环,例4.6.2:把100到200之间的不能被3整除的数输出出来,#include void main() int n; for(n=100;n=200;n+) if (n%3= =0) continue; coutn; ,作业:,P109 4.1 1.2.5.7.9 P113 4.2 3.4.6,实验三:三种基本结构的实现,一、实验目的: 1能够正确使用cin/cout或printf()/scanf()进行各种数据正确格式的输入输出。 2能够熟练使用if语句和switch语句编写分支选择结构程序。 3熟练掌握用while语句、dowhile语句和for语句结构及编写循环结构程序。 4掌握在程序设计中用循环的方法实现一些常用算法(如穷举、迭代、递推等)。 5进一步学习调试程序。,二、实训步骤、方法与要求,1编程计算正整数1-n中的奇数与偶数的和,输出相应信息。 2编程求解分段函数的值,写出分段函数的数学表达式。 3利用switch语句对一个百分制的成绩给出相应等级。 4利用循环语句的三种结构编程求1+2+3+100的和存入变量sum中并输出。 5编程打印500以内的“水仙花数”。“水仙花数”是个3位数,其各位数立方和等于该数本身。 6、任给一个的正整数,要求: 求出它是几位数。按逆序打印出各位数字。例如原数为321,应输出123。 除此之外,程序还应当对不合法的输入作必要的处理。例如:输入负数。 提示:利用 %、/ 运算符,循环迭代。 7利用双重循环语句输出99乘法表。 8验证教材中的例题与习题。(求素数,一元二次方程等)。,累加 累乘 判素数 牛顿迭代法 数值积分*,算法小结:,返回,附:牛顿迭代法求根: 几何意义: 求f(x)在X0附近的根 2. 计算公式: Xn+1=Xn-f(Xn)/f(Xn) 精度: = |Xn+1-Xn|1.0e-3 所求的根: 满足精度的Xn,f(x)=a0xn+a1xn-1+.+an-1x+an=0,三要素:迭代初值,元方程,导数方程 X0=a :X1=X0 (X1=a) 初始化迭代初值 Do X

温馨提示

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

评论

0/150

提交评论