第4章过程化语句

上传人:仙*** 文档编号:172235024 上传时间:2022-12-02 格式:PPT 页数:49 大小:266.53KB
收藏 版权申诉 举报 下载
第4章过程化语句_第1页
第1页 / 共49页
第4章过程化语句_第2页
第2页 / 共49页
第4章过程化语句_第3页
第3页 / 共49页
资源描述:

《第4章过程化语句》由会员分享,可在线阅读,更多相关《第4章过程化语句(49页珍藏版)》请在装配图网上搜索。

1、授课教师:*2w4.1 while语句w4.2 do.while语句w4.3 for语句w4.4 switch语句w4.5 转向语句w4.6 过程应用:求w4.7 过程应用:判明素数w4.8 过程应用:求积分注:红色重点必讲,蓝色一般讲授,黑色可不提注:红色重点必讲,蓝色一般讲授,黑色可不提3学习目标w会使用while循环语句w会使用dowhile 循环语句w会使用for循环语句w会使用switch多重选择语句w会使用break和continue语句4程序的三种基本结构程序的三种基本结构:w 顺序结构w 选择结构(分支结构)n if单分支选择结构n switch 多分支结构w 循环结构n wh

2、ilewhilen do.whilen forn goto语句与if语句构造循环4.0 前言5w循环的基本结构(四个部分)循环的基本结构(四个部分)循环的入口循环的入口 循环继续的条件:其反面为循环结束的循环继续的条件:其反面为循环结束的条件,被称为循环的出口条件,被称为循环的出口 循环体:重复执行的语句循环体:重复执行的语句 改变循环条件:使循环条件发生变化的改变循环条件:使循环条件发生变化的语句,可以使循环条件不再满足语句,可以使循环条件不再满足4.0 前言64.0 前言u程序的基本组成单位是语句。程序的基本组成单位是语句。u在一定的条件下,去重复执行一组语句,这样的语句结在一定的条件下,

3、去重复执行一组语句,这样的语句结构称为构称为循环结构循环结构,被重复执行的那组语句被称为被重复执行的那组语句被称为循环体循环体例如伪代码:While(购物单上还有其他商品)(购物单上还有其他商品)买下一个商品买下一个商品 把它从购物单上划掉把它从购物单上划掉 74.1 while语句语句结构语句结构whilewhile(表达式表达式)循环体;关键字关键字通常为关系或逻辑表达式通常为关系或逻辑表达式决定是否执行循环体决定是否执行循环体重复执行的操作重复执行的操作直至直至表达式表达式的值为的值为false(0)false(0)8n执行流程执行流程:计算表达式的值,计算表达式的值,为非为非0(逻辑真

4、)时,重复执(逻辑真)时,重复执行内嵌语句,每执行一次,行内嵌语句,每执行一次,就判断一次表达式的值,直就判断一次表达式的值,直到表达式值为到表达式值为0 时结束循环,时结束循环,转去执行转去执行while后面的语句后面的语句nwhile语句的特点语句的特点:先判断表先判断表达式,后执行循环体达式,后执行循环体.循环变量初始化循环变量初始化循环条件循环条件(predicate)循环体循环体非非0(true)0(false)流程图如下4.1 while语句9n说明:l循环体有可能一次也不执行l循环体可为任意类型语句l下列情况,退出while循环w条件表达式不成立(为零)w循环体内遇break,r

5、eturn,gotol无限循环(死循环):while(1)循环体;4.1 while语句10例4_1:求sum=1+2+3+100 i=1;/循环变量初始化循环变量初始化while(i=10)/循环条件循环条件 /循环体循环体 sum=sun+i;i+/改变循环变量的值改变循环变量的值可简化为:可简化为:while(i=10)sum+=i+;或或while(sum+=i+,i=10);(1)(1)循环体如果包含一个以上的循环体如果包含一个以上的语句,应该用花括弧括起来,以复语句,应该用花括弧括起来,以复合语句形式出现合语句形式出现.(2).(2)在循环中应有在循环中应有使循环趋向于结束的语句使

6、循环趋向于结束的语句。11例例2:2:寻找寻找10001000以内能被以内能被3 3、5 5、7 7同时整除的正整数同时整除的正整数l a=1为初始值(入口)l a100为循环继续的条件l a=1000为循环的出口l a+为改变循环条件的语句(改变循环条件)l 判断是还能被3、5、7同时整除为重复执行的语句(循环体)a1000循环体a+假(0)真(非0)whilea=112例例2:2:程序代码程序代码#include “iostream.h#include “iostream.h”#include “iomanip.h#include “iomanip.h”void main()void ma

7、in()int a=1;int a=1;while(a1000)while(a1000)if(a%3=0&a%5=0&a%7=0)if(a%3=0&a%5=0&a%7=0)coutsetw(4)a;coutsetw(4)a;a+;a+;循环控制条件循环控制条件循环终值循环终值(出口出口)改变循环改变循环控制变量控制变量的值的值循环初值(入口)循环初值(入口)循环体循环体13 例例3 3 求随机输入的求随机输入的1515个数的平均值个数的平均值分析:l输入的15个数应该是什么类型?l这15个数存放在哪里?l求平均应该先求和,其和也应该存储在一个变量中,其和的初始值应该为多少?l使用循环吗?14#

8、include iostream.h#include intint main()main()int int i i=0;=0;/循环计数器循环计数器 double Sum=0;double Sum=0;/累加器累加器 double d;double d;cout cout “请输入数据请输入数据 (数据之间用空格分隔数据之间用空格分隔 ):endl):endl;while(i 15)while(i d;d;/输入下一个数据输入下一个数据 Sum+=d;Sum+=d;/累加累加 i+;i+;/计算已经输入的数据个数计算已经输入的数据个数 double Average=Sum/i;double A

9、verage=Sum/i;cout cout “n “n其平均值为其平均值为:Average endl:Average endl;return 0;return 0;主函数主函数返回给系统的值返回给系统的值 例例3 3 求随机输入的求随机输入的1515个数的平均值个数的平均值15例例4:4:找出从键盘输入若干数据中的最大和最小的数找出从键盘输入若干数据中的最大和最小的数.请同学们自己动手写一写程序请同学们自己动手写一写程序.提示提示:最大和最小的数保存在哪最大和最小的数保存在哪?如何设置最大数和最小数的初始值如何设置最大数和最小数的初始值?16#include IOstream.h#inclu

10、de intint main()main()double max,min double max,min;double d;double d;cout cout 请输入数据请输入数据 (数据之间用空格分隔数据之间用空格分隔 ):endl):d;d;max=min=d;max=min=d;while(cin while(cin d)d)/继续执行继续执行 if(min d)if(min d)min=d;min=d;if(max d)if(max d)max=d;max=d;cout cout n n其中最大值为其中最大值为:max:max n n其中最小值为其中最小值为:min endl:min

11、E,B-F,.,W-A,X-B,Y-C,Z-DE,B-F,.,W-A,X-B,Y-C,Z-Da-a-e,b-f,e,b-f,w-a,x-b,y-c,z-d,w-a,x-b,y-c,z-d 其它的字符不变其它的字符不变.#include iostream.h#include voidvoid main()main()char char ch ch;cout“cout“请输入一行文本:请输入一行文本:”endl;=A&ch=a&ch if(ch=A&ch=a&ch w)=W&ch=w&ch if(ch=W&ch=w&ch=z)=z)ch=ch-22ch=ch-22;coutch coutch;co

12、utendl coutendl;程序有问题吗程序有问题吗?若有若有,如何修改如何修改?183.2 do_while语句语句w 语句结构do 内嵌语句;while(表达式);w 先执行内嵌语句(循环体),之后计算表达式的值,不为0(逻辑真)时,再执行循环体并判断条件,直到表达式的值为 0 结束循环,转去执行while下面的语句FT内嵌语句内嵌语句表达式表达式dowhile19w 关于dowhile语句的几点注意n编写程序时,无论循环体是否为复合语句,最好都用花括号括起来ndowhile语句要以分号结束,不能忽略不写nwhile和dowhile循环语句最大差别是:前者的循环体有可能一次也不做(如果

13、进入循环时条件就为假);后者的循环体至少要做一次,因为它的判定条件被安排在了做完一次循环体之后。即:如果while后面的表达式一开始就为假(0值)时,两种循环的结果是不同的。3.2 do_while语句语句20例4_2:从键盘得到若干110之间的数,直到输入的数不在此范围为止/*ch4_2.cpp*#include void main()int val;do cout val;/修改条件 if(val10)cout the number is not between 1 and 10n;while(val=10);/继续条件 cout you entered a val endl;21/*ch

14、4_3.cpp*#include void main()int i,sum=0;i=1;do sum=sum+i;i+;while(i=100);cout”sum=”sumendl;结果:结果:sum=5050 例4_3:求sum=1+2+3+100 22例3:while和do-while循环的比较w/分析输入1运行结果,再分析输入11的运行结果(1)#include (2)#include void main()void main()int sum=0,i;int sum=0,i;cini;cini;while(i=10)do sum=sum+i;sum=sum+i;i+;i+;while(

15、i=10);cout“sum=”sumendl;cout“sum=”sumendl;运行结果:1 sum=55 再运行一次:11sum=0运行结果:1 sum=55 再运行一次:11sum=11233.3 for语句语句w C+语言中的for语句使用最为灵活,不仅可以用于循环次数已经确定的情况,而且可以用于循环次数不确定而只给出循环结束条件的情况w for语句结构 for(表达式表达式1;表达式;表达式2;表达式;表达式3)循环体循环体关键字关键字初始表达式初始表达式循环条件循环条件循环后置表达式循环后置表达式expr1;while(expr2)循环体;expr3;24w for(i=1;i=

16、1;i-)/1001,-1为间隔为间隔,100次次w for(i=7;i=2;i-=2)/202,-2为间隔为间隔,10次次w for(i=99;i=0;i-=3)/990,-3为间隔为间隔,34次次3.3 for语句语句25#include void main()int sum=0;for(int i=1;i=100;i+)sum+=i;cout sum=sum endl;i=100sum+=ii=1i+sum=0cout sum例1:求sum=1+2+3+100 i=1;while(i =n)sum+=i+;i=1;do sum+=i+;while(i =n);26说明:说明:for语句中

17、expr1,expr2,expr3 类型任意,都可省略,但分号;不可省(1)省略表达式省略表达式1 i=1;for(;i100)break;(3)省略表达式省略表达式3 for(i=1;i=100;)sum+=i+;(4)缺省表达式缺省表达式3和循环体和循环体 for(i=1;sum+=i+i=n;);27(5)表达式表达式1和表达式和表达式3可以同时省略可以同时省略 for(;i100)break;(7)表达式表达式1,2,3,可为任意表达式,可为任意表达式 for(sum=0,i=1;i=100;i+)/表达式表达式1为逗号表达式为逗号表达式 sum+=i;for(i=0,j=100,k=

18、0;ij;i+,j-)/表达式表达式1、3为逗号表达式为逗号表达式 k+=i*j;for(i=1;i100;sum+=i+);(8)表达式表达式1可以作为循环变量定义可以作为循环变量定义 for(int i=1;i=2)(n=2)分析分析:可以用迭代方法求解:可以用迭代方法求解迭代迭代 是一个不断用新值取代变量的旧值,是一个不断用新值取代变量的旧值,或由旧值递推出变量的新值的过程。或由旧值递推出变量的新值的过程。29#include iostream.h#include void main()void main()int int n,i,pre,next;n,i,pre,next;cout c

19、out n;n;pre=0;next=1;pre=0;next=1;cout cout pre t next t;pre t next t;for(i=2;i=n/2;i+)for(i=2;i=n/2;i+)pre=pre+next;pre=pre+next;next=next+pre;next=next+pre;cout cout pre t next t;pre t next t;if(i%5=0)cout endl if(i%5=0)cout (i-1)if(n (i-1)*2)2)cout pre+next endl cout pre+next endl;例例2 2 求菲波那契数列的前

20、求菲波那契数列的前 n n 项项 整除整除每趟循环求得两项每趟循环求得两项304.4 switch多分支选择语句多分支选择语句w 用switch语句实现选择结构switch(表达式)case 常量值1:语句序列1;break;case 常量值2:语句序列2;break;case 常量值n:语句序列n;break;default:语句序列n+1;break;31w 计算switch表达式的值,与case后的常量值比较,如果等于第i个值时,则执行case语句序列i;如果执行时没有遇到break语句,那就继续顺序执行case语句序列i+1、n、n+1,而不用再判别与常量值是否匹配;如果遇到break

21、语句,则立即跳去执行switch的后续语句w 若与所有常量值都不相等,才执行default的语句序列n+14.4 switch多分支选择语句多分支选择语句32u说明:说明:(1)表达式只能是整型、字符型或枚举型,不能为浮点型。)表达式只能是整型、字符型或枚举型,不能为浮点型。(2)当表达式的值与某个)当表达式的值与某个case后常量表达式值相同时,执行之。后常量表达式值相同时,执行之。(3)都不匹配,执行)都不匹配,执行default后的语句。后的语句。u例如;根据考试成绩的等级输出百分制分数段。例如;根据考试成绩的等级输出百分制分数段。char grade=B;switch(grade)ca

22、seA:cout“85-100n”;break;caseB:cout“70-84n”;break;caseC:cout“60-69n”;break;caseD:cout“60n”;break;default:cout“errorn”;/最后可省略最后可省略break 输出结果为:输出结果为:70-80 4.4 switch多分支选择语句多分支选择语句33多个多个case可共用一组执行语句,注意可共用一组执行语句,注意break的使用的使用 case A:case B:case C:cout60n”;break;当当grade 的值为的值为A、B、C 时,都输出时,都输出6034 用用if实现根

23、据考试成绩的等级输出百分制分数段实现根据考试成绩的等级输出百分制分数段例:根据分数输出等级例:根据分数输出等级 int grade;/if(grade=85&grade=100)cout=70&grade85)cout=60&grade70)cout“Cn”;else if(grade=0)cout“Dn”;else cout“errorn”;351、break 语句语句ubreak 语句用于语句用于while,dowhile,for语句中,从最近的封语句中,从最近的封闭循环体中跳出。闭循环体中跳出。ubreak语句用于语句用于switch语句中,跳出语句中,跳出switch语句。语句。例如:

24、例如:for(;)for(;)/if(i=1)break;/a=1;/break跳至此处跳至此处 /4.5 转向语句转向语句36ucontinue语句用于循环语句中,作用为结束本次循环语句用于循环语句中,作用为结束本次循环(即不执行本次循环中尚未执行的语句),进入下一次(即不执行本次循环中尚未执行的语句),进入下一次循环的判定。循环的判定。例如:输出例如:输出100-200之间不能被之间不能被3整除的数据。整除的数据。for(int n=100;n=200;n+)if(n%3=0)continue;coutnendl;/u注意:注意:continue语句和语句和break语句的区别:语句的区别

25、:continue语句结束一次循环中,其后未执行的语句不一定语句结束一次循环中,其后未执行的语句不一定结束整个循环语句的执行。结束整个循环语句的执行。break语句终止整个循环语句。语句终止整个循环语句。2、Continue 语句语句37ugoto语句用于将程序控制流程从它所在的地方转移到语句用于将程序控制流程从它所在的地方转移到标识符所标识的语句处。标识符所标识的语句处。i=1;sum=0;loop:sum+=i+;if(i=100)goto loop;cout“sum is”sumendl;u注意:注意:现代程序设计方法主张限制使用现代程序设计方法主张限制使用goto语句语句 当程序需要从

26、多重循环深处直接跳转到循环之外时,当程序需要从多重循环深处直接跳转到循环之外时,可用可用goto语句,比用语句,比用break语句简洁。语句简洁。3、goto 语句语句384.6 求w 例:/4=1-1/3+1/5-1/7+1/n,求的近似值,精度要求为|1/n|108w 关键是如何形成新项。级数各项分子都是1,分母由奇数组成,各项前的符号正负相间n符号变量sign,该变量交替取1和-1两个值n绝对值函数,整型abs(x),实型fabs(x)n绝对值函数在头文件math.h里39/*ch4_4.cpp*#include#include#include void main()double s=0

27、,x=1;/初始值 long k=1;int sign=1;while(fabs(x)1e-8)/项值在比较前要先求绝对值 s+=x;k+=2;sign*=-1;x=sign/double(k);/强制转换使x得到浮点数值 s*=4;/值 cout the pi is /输出 setiosflags(ios:fixed)setprecision(8)s endl;40设第n-1项为x则下一项为x*(-1)*(2*n-3)/(2*n-1)/*ch4_5.cpp*#include#include void main()double s=0,x=1;/初始值 for(int n=1;fabs(x)1

28、e-8;n+,x*=(-1.0)*(2*n-3)/(2*n-1)s+=x;s*=4;/值 cout the pi is s endl;/输出41 例:给定一个整数例:给定一个整数m,判断该数是否为素数。判断该数是否为素数。分析:分析:m是素数的条件是是素数的条件是m不能被不能被2,3,m-1整除。整除。/*ch4_6.cpp*#include void main()long m;coutm;for(int i=2;im;i+)if(m%i=0)break;if(m=i)cout“m is prime.n”;else cout“m is not prime.n”;4.7 判明素数42改进:为提高

29、效率,用m除以2sqrt(m)求余数,判断m是否能被整除/*ch4_7.cpp*#include#include void main()long m;int i;cout m;double sqrtm=sqrt(m);/用到math.hfor(i=2;i=sqrtm;i+)if(m%i=0)break;if(sqrtmi)cout m is prime.n;else cout m isnt prime.n;43补充:循环的嵌套补充:循环的嵌套 一个循环语句的循环体内又包含循环语句,称为嵌套循环,一个循环语句的循环体内又包含循环语句,称为嵌套循环,通常把里面的循环称为通常把里面的循环称为内循环内

30、循环,外面的循环称为,外面的循环称为外循环。外循环。各种循环语句都可以互相嵌套各种循环语句都可以互相嵌套 44例:求从a到b数段内的所有素数/*ch4_8.cpp*#include#include#include void main()long l=0;int i;cout a b;cout primes from a to b is:n;if(a%2=0)a+;/若为偶数,则增1 for(long m=a;m=b;m+=2)/步长为2 int sqrtm=sqrt(m);for(i=2;isqrtm)/素数输出 if(l+%10=0)cout endl;cout setw(5)m;454.8

31、 求积分w 略46本章小结w 循环是一组语句,计算机反复执行这组语句直到满足终循环是一组语句,计算机反复执行这组语句直到满足终止条件为止。止条件为止。w while,do.while和和for三种循环语句可以相互转化。三种循环语句可以相互转化。w for主要适用于循环次数已知的循环。主要适用于循环次数已知的循环。w while先判定循环条件,可能一次都不执行循环体。先判定循环条件,可能一次都不执行循环体。w dowhile后判定循环条件,至少保证执行一次循环体后判定循环条件,至少保证执行一次循环体w while和和dowhile中都有改变循环控制变量的语句。中都有改变循环控制变量的语句。w 可

32、以通过循环变量来控制循环,在循环体中通过条件判可以通过循环变量来控制循环,在循环体中通过条件判定产生中间跳转的方法,终止循环。定产生中间跳转的方法,终止循环。w switch是多选一的分支语句,它是是多选一的分支语句,它是if语句的一个补充语句的一个补充(else if结构),当用它编制程序时会增加可读性。结构),当用它编制程序时会增加可读性。47分析:分析:横向横向:1-9:1-9纵向纵向:1-9:1-9结果结果:形成一个直角三角形形成一个直角三角形1 1、输出九九乘法表、输出九九乘法表习 题48#include#include void main()cout|;for(int i=1;i=9;i+)cout setw(5)i;cout n-|-n;for(i=1;i=9;i+)cout setw(2)i|;for(int j=1;j=i;j+)cout setw(5)i*j;cout endl;coutendl;输出九九乘法表输出九九乘法表492 2、平面图形的打印、平面图形的打印#include void main()int i,j,k;for(i=1;i=10;i+)for(j=1;j=10-i;j+)cout ;for(k=1;k=2*i-1;k+)cout#;cout endl;

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

copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!