版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、第4章过程化语句2021-7-15第4章过程化语句w4.1 while语句w4.2 do.while语句w4.3 for语句w4.4 switch语句w4.5 转向语句w4.6 过程应用: 求w4.7 过程应用: 判明素数w4.8 过程应用: 求积分注:红色重点必讲,蓝色一般讲授,黑色可不提注:红色重点必讲,蓝色一般讲授,黑色可不提2021-7-15第4章过程化语句学习目标w会使用while循环语句w会使用dowhile 循环语句w会使用for循环语句w会使用switch多重选择语句w会使用break和continue语句2021-7-15第4章过程化语句程序的三种基本结构程序的三种基本结构:
2、 :w 顺序结构w 选择结构(分支结构)n if单分支选择结构n switch 多分支结构w 循环结构n whilewhilen do.whilen forn goto语句与if语句构造循环4.0 前言2021-7-15第4章过程化语句w循环的基本结构(四个部分)循环的基本结构(四个部分) 循环的入口循环的入口 循环继续的条件:其反面为循环结束的循环继续的条件:其反面为循环结束的条件,被称为循环的出口条件,被称为循环的出口 循环体:重复执行的语句循环体:重复执行的语句 改变循环条件:使循环条件发生变化的改变循环条件:使循环条件发生变化的语句,可以使循环条件不再满足语句,可以使循环条件不再满足4
3、.0 前言2021-7-15第4章过程化语句4.0 前言u程序的基本组成单位是语句。程序的基本组成单位是语句。u在一定的条件下,去重复执行一组语句,这样的语句结在一定的条件下,去重复执行一组语句,这样的语句结构称为构称为循环结构循环结构,被重复执行的那组语句被称为,被重复执行的那组语句被称为循环体循环体例如伪代码: While (购物单上还有其他商品)(购物单上还有其他商品) 买下一个商品买下一个商品 把它从购物单上划掉把它从购物单上划掉 2021-7-15第4章过程化语句4.1 while语句语句结构语句结构whilewhile(表达式表达式) 循环体 ; 关键字关键字通常为关系或逻辑表达式
4、通常为关系或逻辑表达式决定是否执行循环体决定是否执行循环体重复执行的操作重复执行的操作直至表达式的值为直至表达式的值为false ( 0 )false ( 0 )2021-7-15第4章过程化语句n执行流程执行流程:计算表达式的值,计算表达式的值,为非为非0(逻辑真)时,重复执(逻辑真)时,重复执行内嵌语句,每执行一次,行内嵌语句,每执行一次,就判断一次表达式的值,直就判断一次表达式的值,直到表达式值为到表达式值为0 时结束循环,时结束循环,转去执行转去执行while后面的语句后面的语句nwhile语句的特点:先判断表语句的特点:先判断表达式,后执行循环体达式,后执行循环体.循环变量初始化循环
5、变量初始化循环条件循环条件(predicate)循环体循环体非非0(true)0(false)流程图如下4.1 while语句2021-7-15第4章过程化语句n说明:l循环体有可能一次也不执行l循环体可为任意类型语句l下列情况,退出while循环w条件表达式不成立(为零)w循环体内遇break,return,gotol无限循环(死循环 ): while(1) 循环体;4.1 while语句2021-7-15第4章过程化语句例4_1:求sum = 1+2+3+ +100 i=1; /循环变量初始化循环变量初始化while (i= 10) /循环条件循环条件 /循环体循环体 sum=sun+i;
6、 i+ /改变循环变量的值改变循环变量的值可简化为:可简化为:while(i=10 ) sum+=i+;或或while(sum+=i+,i=10 ) ;(1)(1)循环体如果包含一个以上的循环体如果包含一个以上的语句,应该用花括弧括起来,以复语句,应该用花括弧括起来,以复合语句形式出现合语句形式出现.(2).(2)在循环中应有在循环中应有使循环趋向于结束的语句。使循环趋向于结束的语句。2021-7-15第4章过程化语句例例2:2:寻找寻找10001000以内能被以内能被3 3、5 5、7 7同时整除的正整数同时整除的正整数l a=1为初始值(入口)l a100为循环继续的条件l a=1000为
7、循环的出口l a+为改变循环条件的语句(改变循环条件)l 判断是还能被3、5、7同时整除为重复执行的语句(循环体)a1000循环体a+假(0)真(非0)whilea=12021-7-15第4章过程化语句例例2:2:程序代码程序代码#include #include “iostream.hiostream.h”#include #include “iomanip.hiomanip.h”void main( )void main( ) 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
8、=0&a%7=0) coutsetw(4)a; coutsetw(4)a; a+; a+; 循环控制条件循环控制条件循环终值循环终值( (出口出口) )改变循环改变循环控制变量控制变量的值的值循环初值(入口)循环初值(入口)循环体循环体2021-7-15第4章过程化语句 例例3 3 求随机输入的求随机输入的1515个数的平均值个数的平均值分析:l输入的15个数应该是什么类型?l这15个数存放在哪里?l求平均应该先求和,其和也应该存储在一个变量中,其和的初始值应该为多少?l使用循环吗?2021-7-15第4章过程化语句#include #include int main()int main()
9、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; cin d;/ / 输入下一个数据输入下一个数据 Sum += d;Sum += d;/ / 累加累加 i+;i+; / / 计算已经输入的数据个数计算已经输入的数据个数 double Average = Sum / i; d
10、ouble Average = Sum / i; cout cout “nn其平均值为其平均值为: Average endl;: Average endl; return 0; return 0; 主函数主函数返回给系统的值返回给系统的值 例例3 3 求随机输入的求随机输入的1515个数的平均值个数的平均值2021-7-15第4章过程化语句例例4:4:找出从键盘输入若干数据中的最大和最小的数找出从键盘输入若干数据中的最大和最小的数. .请同学们自己动手写一写程序请同学们自己动手写一写程序. .提示提示: : 最大和最小的数保存在哪最大和最小的数保存在哪? ? 如何设置最大数和最小数的初始值如何
11、设置最大数和最小数的初始值? ?2021-7-15第4章过程化语句#include #include int main()int main() double max,min; double max,min; double d; double d; cout cout 请输入数据请输入数据 ( ( 数据之间用空格分隔数据之间用空格分隔 ): endl;): d; cin d; max=min=d; max=min=d; while (cin d) while (cin d) / / 继续执行继续执行 if (min d) if (min d) min = d;min = d; if (max d
12、) if (max d)max= d;max= d; cout n cout n其中最大值为其中最大值为: max: max n n其中最小值为其中最小值为: min endl;: min E, B-F,.,W-A,X-B,Y-C,Z-DA-E, B-F,.,W-A,X-B,Y-C,Z-Da-e, b-f, a-e, b-f, ,w-a, x-b, y-c, z-d ,w-a, x-b, y-c, z-d 其它的字符不变其它的字符不变. . #include #include void main()void main() char ch; char ch; cout cout“请输入一行文本:
13、请输入一行文本:” endl; =A & ch =a & ch =A & ch =a & ch =W & ch =w & ch =W & ch =w & ch =z) ch=ch-22;ch=ch-22; coutch; coutch; coutendl; coutendl; 程序有问题吗程序有问题吗? ?若有若有, ,如何修改如何修改? ?2021-7-15第4章过程化语句3.2 do_while语句语句w 语句结构do 内嵌语句; while ( 表达式 ) ;w 先执行内嵌语句(循环体),之后计算表达式的值,不为0(逻辑真)时,再执行循环体并判断条件,直到表达式的值为 0 结束循环,转去
14、执行while下面的语句FT内嵌语句内嵌语句表达式表达式dowhile2021-7-15第4章过程化语句w 关于dowhile语句的几点注意n编写程序时,无论循环体是否为复合语句,最好都用花括号括起来ndowhile语句要以分号结束,不能忽略不写nwhile和dowhile循环语句最大差别是:前者的循环体有可能一次也不做(如果进入循环时条件就为假);后者的循环体至少要做一次,因为它的判定条件被安排在了做完一次循环体之后。即:如果while后面的表达式一开始就为假(0值)时,两种循环的结果是不同的。3.2 do_while语句语句2021-7-15第4章过程化语句例4_2:从键盘得到若干110之
15、间的数,直到输入的数不在此范围为止/*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;2021-7-15第4章过程化语句/*ch4_3.cpp*#include void main() int i ,sum=0; i=1; do sum=sum+i; i+; while(i=100); cout”sum=”sumendl;
16、结果:结果:sum=5050 例4_3:求sum = 1+2+3+ +100 2021-7-15第4章过程化语句例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 (i=10); cout“sum=”sumendl; cout“sum=”sumendl; 运行结果:1
17、 sum=55 再运行一次: 11sum=0运行结果:1 sum=55 再运行一次: 11sum=112021-7-15第4章过程化语句3.3 for语句语句w C+语言中的for语句使用最为灵活,不仅可以用于循环次数已经确定的情况,而且可以用于循环次数不确定而只给出循环结束条件的情况w for语句结构 for ( 表达式表达式1;表达式;表达式2;表达式;表达式3 ) 循环体循环体关键字关键字初始表达式初始表达式循环条件循环条件循环后置表达式循环后置表达式expr1;while(expr2) 循环体; expr3;2021-7-15第4章过程化语句w for(i=1; i=1; i-) /1
18、001,-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语句语句2021-7-15第4章过程化语句# 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;whi
19、le ( i = n ) sum + = i + + ;i = 1;do sum + = i + + ; while ( i = n );2021-7-15第4章过程化语句说明:说明:for语句中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 ; ) ; 2021-7-15第4章过程化语句(5)表达式表达式1和
20、表达式和表达式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=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 )分析:可以用迭代方法求解分析:可以用迭代方法求解迭代迭代 是一个不断用新值取
21、代变量的旧值,是一个不断用新值取代变量的旧值, 或由旧值递推出变量的新值的过程。或由旧值递推出变量的新值的过程。2021-7-15第4章过程化语句#include #include void main()void main() int n, i, pre, next ; int n, i, pre, next ; cout cout n ; cin n ; pre = 0 ; next = 1 ; pre = 0 ; next = 1 ; cout pre t next t; cout pre t next t; for ( i = 2; i = n/2 ; i + ) for ( i = 2
22、; i = n/2 ; i + ) pre= pre + next ; pre= pre + next ; next = next + pre ; next = next + pre ; cout pre t next t ; cout 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 求菲波那契数列的前求菲波那契数列的前 n n 项项 整除整除每趟循环求得
23、两项每趟循环求得两项2021-7-15第4章过程化语句4.4 switch多分支选择语句多分支选择语句w 用switch语句实现选择结构switch (表达式) case 常量值1: 语句序列1; break;case 常量值2: 语句序列2; break; case 常量值n: 语句序列n; break;default : 语句序列n+1; break; 2021-7-15第4章过程化语句w 计算switch表达式的值,与case后的常量值比较,如果等于第i个值时,则执行case语句序列i;如果执行时没有遇到break语句,那就继续顺序执行case语句序列i+1、 、n 、n+1,而不用再判
24、别与常量值是否匹配;如果遇到break语句,则立即跳去执行switch的后续语句w 若与所有常量值都不相等,才执行default的语句序列n+14.4 switch多分支选择语句多分支选择语句2021-7-15第4章过程化语句u说明:说明:(1)表达式只能是整型、字符型或枚举型,不能为浮点型。)表达式只能是整型、字符型或枚举型,不能为浮点型。(2)当表达式的值与某个)当表达式的值与某个case后常量表达式值相同时,执行之。后常量表达式值相同时,执行之。(3)都不匹配,执行)都不匹配,执行default后的语句。后的语句。u例如;根据考试成绩的等级输出百分制分数段。例如;根据考试成绩的等级输出百
25、分制分数段。 char grade=B; switch(grade) caseA: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多分支选择语句多分支选择语句2021-7-15第4章过程化语句多个多个case可共用一组执行语句,注意可共用一组执行语句,注意break的使用的使用 case A:case B:case C:
26、cout60n”;break;当当grade 的值为的值为A、B、C 时,都输出时,都输出602021-7-15第4章过程化语句 用用if实现根据考试成绩的等级输出百分制分数段实现根据考试成绩的等级输出百分制分数段例:根据分数输出等级例:根据分数输出等级 int grade; / if(grade=85&grade=100) cout=70&grade85) cout=60&grade70) cout“Cn”; else if(grade =0) cout“Dn”; else cout“errorn”;2021-7-15第4章过程化语句1、break 语句语句ubreak 语句用于语句用于wh
27、ile, dowhile, for语句中,从最近的封语句中,从最近的封闭循环体中跳出。闭循环体中跳出。ubreak语句用于语句用于switch语句中,跳出语句中,跳出switch语句。语句。例如:例如: for(;) for(;) / if(i=1)break; / a=1; /break跳至此处跳至此处 / 4.5 转向语句转向语句2021-7-15第4章过程化语句ucontinue语句用于循环语句中,作用为结束本次循环语句用于循环语句中,作用为结束本次循环(即不执行本次循环中尚未执行的语句),进入下一次(即不执行本次循环中尚未执行的语句),进入下一次循环的判定。循环的判定。例如:输出例如:
28、输出100-200之间不能被之间不能被3整除的数据。整除的数据。 for(int n=100;n=200;n+) if(n%3= =0) continue; coutnendl; / u注意:注意:continue语句和语句和break语句的区别:语句的区别: continue语句结束一次循环中,其后未执行的语句不一定语句结束一次循环中,其后未执行的语句不一定结束整个循环语句的执行。结束整个循环语句的执行。 break语句终止整个循环语句。语句终止整个循环语句。2、Continue 语句语句2021-7-15第4章过程化语句ugoto语句用于将程序控制流程从它所在的地方转移到语句用于将程序控制
29、流程从它所在的地方转移到标识符所标识的语句处。标识符所标识的语句处。 i=1;sum=0; loop: sum+=i+; if(i=100) goto loop; cout“sum is”sumendl;u注意:注意: 现代程序设计方法主张限制使用现代程序设计方法主张限制使用goto语句语句 当程序需要从多重循环深处直接跳转到循环之外时,当程序需要从多重循环深处直接跳转到循环之外时,可用可用goto语句,比用语句,比用break语句简洁。语句简洁。3、goto 语句语句2021-7-15第4章过程化语句4.6 求w 例:/4=1-1/3+1/5-1/7+1/n,求的近似值,精度要求为|1/n|
30、108w 关键是如何形成新项。级数各项分子都是1,分母由奇数组成,各项前的符号正负相间n符号变量sign,该变量交替取1和-1两个值n绝对值函数,整型abs(x),实型fabs(x)n绝对值函数在头文件math.h里2021-7-15第4章过程化语句/*ch4_4.cpp*#include #include #include void main() double s=0,x=1; /初始值 long k=1; int sign=1; while(fabs(x)1e-8) /项值在比较前要先求绝对值 s += x; k += 2; sign *= -1; x = sign/double(k);
31、/强制转换使x得到浮点数值 s *= 4; /值 cout the pi is /输出 setiosflags(ios:fixed) setprecision(8) s endl;2021-7-15第4章过程化语句设第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)1e-8; n+,x*=(-1.0)*(2*n-3)/(2*n-1) s += x; s*=4; /值 cout the pi is s endl;
32、/输出2021-7-15第4章过程化语句 例:给定一个整数例:给定一个整数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 判明素数2021-7-15第4章过程化语句改进:为提高效率,用m除以2sqrt(m)求余数,判断
33、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;2021-7-15第4章过程化语句补充:循环的嵌套补充:循环的嵌套 一个循环语句的循环体内又包含循环语句,称为嵌套循环,一个循环语句的循环体内又包含循环语句,称为嵌套循环,通常把里面的循环称为通常把里面的循环称为内循环内循环,外面的循环称为,外面的循环称为外循环。外循环。各种循环语句都可以互相嵌套各种循环语句都可以互相嵌
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 细菌性疫苗生产工安全风险测试考核试卷含答案
- 双酚A装置操作工安全演练能力考核试卷含答案
- 砖瓦码窑工安全应急知识考核试卷含答案
- 2026年新科教版初中八年级语文上册第三单元说明文方法作用卷含答案
- 2026年新科教版初中八年级道德与法治下册第一单元保障宪法实施卷含答案
- 手风琴装配工岗前基础综合考核试卷含答案
- 列检值班员8S考核试卷含答案
- 日间手术流程优化:JCI认证的效率提升路径
- 日间手术医保与绩效挂钩模式
- 新生儿PWS的低血糖防治策略
- 刷单协议书合同范本
- 运输生猪合同范本
- 2025年重庆市新能源年度开发建设方案
- 科技写作与文献检索课程论文试题(卷)及答案
- 工业数据备份系统项目可行性研究报告
- 初级中学团课课件
- 微生物的实验室培养
- 给会员做训练计划
- 身心灵课件教学课件
- 落地式脚手架拆除安全专项施工方案
- 餐厅质量管理与食品检验操作手册
评论
0/150
提交评论