程序的流程控制ppt课件_第1页
程序的流程控制ppt课件_第2页
程序的流程控制ppt课件_第3页
程序的流程控制ppt课件_第4页
程序的流程控制ppt课件_第5页
已阅读5页,还剩33页未读 继续免费阅读

下载本文档

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

文档简介

1、C+程序的流程控制 第三章程序或程序模块的三种根本构造 顺序构造条件分支构造循环构造经过安排语句的陈列顺序来决议程序流程由特定的条件决议执行哪个语句的程序构造由特定的条件决议某个语句反复执行次数的控制方式顺序构造 按语句的先后顺序依次执行每一条语句语句1语句2顺序构造表示X=3;Y=4Z=X;X=YY=Z;程序段完成的功能是:交换X和Y的值例:条件语句1语句2falsetrue语句格式: If(条件) 语句1 else 语句2 含义: 假设条件成立,执行语句1,否那么执行语句2流程表示: If多分支构造一条件分支构造 条件语句truefalse语句格式:If(条件) 语句含义: 假设条件成立,

2、执行语句1,否那么什么也不做即跳出if语句的执行,到下一第语句流程表示:(无else子句) If多分支构造二条件分支构造 例1:输入2个数,找出其中最大的一个并显示出来。#includevoid main( ) int i,j; coutij; cout=j) coutiendl; else coutjendl;条件分支构造例2:输入3个数,找出其中最大的一个并显示出来。#includevoid main( ) int i,j,k; coutijk; cout“3个数中最大的是:; if(ij) i=j; if(ik) i=j; coutiendl;两条无else分支的语句例3:输入3个数,然

3、后按从大到小的顺序把它们显示出来。#includevoid main( ) int i,j,k,p; coutijk; if(ij) p=i; i=j; j=p; if(ik) p=i; i=k; k=p; if(jk) p=j; j=k; k=p; coutendlijk;例4:P58,例3.5,请对照书本自主学习If 语句的嵌套语句中出现多个if和多个else时,首先必需进展配对,配对原那么:从遇见的第一个else开场,else总与离它最近的if配对。在if语句的else前嵌套另一个if语句容易使所表达的逻辑关系难于了解,应加以防止,必要时把嵌套位置改为else之后条件分支构造 If多分支

4、构造If多分支构造是一种经过规范化的if嵌套所构成的条件分支构造,在这种构造中if语句嵌套在else之后运用格式:if(条件1) 语句1else if条件2 语句2else if条件3 语句3else if条件n 语句nelse 语句n+1条件分支构造 例:输入一个0100分范围内的一个成果,显示相应的等级:90100优8089良7079中6069及格60分以下不及格#includevoid main( ) float score; coutscore; if(score100) cout“成果必需在0100之间; else if(score60) cout“不及格endl: else if(

5、score70) cout“及格endl; else if(score80) cout“中endl; else if(score90) cout“良endl; else cout“优endl; switch 多分支构造 switch整型表达式 case 整型常量表达式1:语句序列1 case 整型常量表达式2:语句序列2 case 整型常量表达式k:语句序列k default:语句序列k+1条件分支构造 switch语句格式:switch语句的含义:经过判别整型表达式的值,决议程序的去向: 假设整型表达式的值与整型常量表达式1的值一样,那么依次执行语句序列1开场的各个语句序列,即执行语句序列1

6、,语句序列2,语句序列k,语句序列k+1 假设整型表达式的值与整型常量表达式2的值一样,那么依次执行开场的各个语句序列,即执行语句序列2,语句序列k,语句序列k+1 依此类推 假设整型表达式的值不等于任何列出的整型常量表达式的值,那么执行从default开场的语句序列 假设没有default语句,那么什么也不做。在依次执行语句序列的过程中,如遇见break语句,那么立刻停顿语句序列的执行,跳出switch分支构造因此,假设要让分支构造只执行与整型表达式匹配的整型常量表达式后的语句序列,而不往下执行下面的语句序列,应在该语句序列后加一条break语句在每一个整型常量表达式后的语句序列后加brea

7、k语句的switch分支构造,等同于if多分支构造。break语句在switch分支构造中的运用例1:输入一个表示星期的数字0表示星期日,1表示星期二,6表示星期六,显示对应的英文单词。#includevoid main( ) int weekday; coutweekday; switch(weekday) case 0:cout“Sundayendl;break; case 1:cout“Mondayendl;break; case 2:cout“Tuesdayendl;break; case 3:cout“Wednesdayendl;break; case 4:cout“Thursday

8、endl;break; case 5:cout“Fridayendl;break; case 6:cout“Saturdayendl;break; /weekday的值为0时, 显示Sunday,break语句阻止了往下执行输出语句例2:输入一个0100分范围内的一个成果,显示相应的等级:90100优8089良7079中6069及格60分以下不及格(用switch多分支构造实现)#includevoid main( ) float score; coutscore; switch(int(score/10) case 0: case 1: case 2: case 3: case 4: cas

9、e 5:cout“不及格endl; break; case 6:cout“及格endl; break; case 7: cout“中endl; break;case 8: cout“良endl; break;case 9: case 10: cout“优endl; break;default: cout“成果必需在0100分之间; 例2阐明:int(score/10)的值为0、1、2、3、4时分别执行case0、case1、case2、case3、case4后的语句序列是空的,程序从这些入口点进入后,直接往下走,并在执行完case 5后的语句并遇见break语句时跳出switch分支。因此当值

10、为05时均显示“不及格。case 9后的语句为空,从case 9进入后,直接往下执行case 10后的语句序列,遇见break语句时跳出switch分支。因此,值为9和10时均显示“优。循环构造 for循环初始化;循环条件;循环参数调整循环体for 语句循环初始化循环条件循环参数调整循环体falsetruefor 循环构造表示for 循环含义首先进展循环初始化,然后判别循环条件,假设循环条件成立那么执行循环体;假设不成立,那么终了循环循环体执行完后,再进展循环参数的调整,然后再进展循环条件判别,假设循环条件成立,那么继续执行循环体否那么跳出循环,循环体执行完进展循环参数的调整,然后再进展条件判

11、别,条件成立继续执行循环体,否那么跳出循环,直到跳出循环关于for 循环语句的几点阐明循环条件是一个逻辑表达式循环初始化和循环参数的调整都该当具有副作用循环体可以是复合语句,也可以是根本语句典型的for循环实例:for(int i=0;i100;i+=5) couti ;假设循环条件一开场就不成立,那么循环体一次也不执行循环初始化和循环参数的调整可以为空,相当于while循环循环条件为空意味着永真条件循环体为空,可用于延迟一段时间例:分析以下程序段的执行结果for(int I=0;I=20;I+) cout*;分析:第1次:循环初始化I=0,判别条件I=20成立,第一次执行循环体,输出第一个*

12、;第2次:进展参数调整,I增1,I的值为1,条件成立,执行第二次循环,输出第二个*第20次:I为19,循环条件成立,执行循环体,输出第20个*号,然后I调整为20;第21次:I为20,循环条件成立,执行循环体,输出第21个*,然后I调整为21;跳出循环:I的值为21,循环条件I=20不成立,跳出循环执行结果:输出21个*号例1:输入10个数,计算并显示它们的合计#include void main( ) double x,s=0; /x用于暂时保管输入的数据,s用于 保管累加结果,称s为累加器 cout“请输入10个数:; for(int i=0; ix; s+=x; cout“合计:s; 例

13、2:显示并输出如下所示的三角形: * 第0行:5空、1* * 第1行:4空、3* *第2行:3空、5* *第3行:2空、7* *第4行:1空、9*第5行:0空、11*由以上得出:假设行号为i,那么应输出的空格数为5-i,应输出的*数为i+i+1程序如下页:#include void main( ) for(int i=0; i6; i+) /循环6次,输出6行 coutendl; /每次循环换行,换6次,显示6行 int j; for(j=0;j5-i;j+) cout /每行输出假设干空格 for(j=0;ji+i+1;j+) cout* /然后输出假设干* cout“合计:s; 书本70页

14、例3.11显示输出99乘法表。请看书本自主学习注:setw2功能是为下一个要输出的数据设置输出宽度,该设置只对下一个数据输出有效。例如,cout1setw(8)20) cout0 循环体是一个根本语句:coutI-;分析:第一次:I=20时,执行第一次循环,输出I的值20,同时在cout0不成立,不执行循环体,跳出循环。因此循环共执行了20次。do while 语句do 循环体 while循环条件)循环构造 do while 循环构造表示循环条件循环体falsetruedo while 循环含义不判别条件直接执行一次循环体,循环体执行完后,再判别循环条件,假设条件为真,那么再次执行循环体,假设

15、条件不成立,那么跳出循环,在第二次循环体执行完后,继续先判别循环条件,条件满足,那么执行循环体,直到条件不满足,跳出循环。do while 循环和while 循环的区别do while 循环无论循环条件能否满足,循环体至少执行一次;然后再根据循环条件决议能否继续执行循环体;while 循环循环条件不满足那么循环体一次也不执行I=1;While(I=5)CoutI+; I=1;DoCoutI+;While(I=5)用do while 循环实现用while 循环实现用两种循环输出一样的内容:输出:12345用While循环与dowhile循环等效:I=6;While(I=5)CoutI+; /循环

16、体一次也没执行,因此无任何内容输出I=6;DoCoutI+;While(I0;I-) s+=I; /for循环8次实现s=8+7+1, 且I的值为0循环终了时,s的值为36While(+I5) s+=I; /while循环4次,把14再加到s中,I的值为5时循环终了,s的值为46后,s的值是 答案:46#include #includevoid main( ) double A,B,C; do coutendl ABC; while(A=0.0) /输入3个系数,当系数A为0时重新输入 coutendl; double Delta=B*B-4*A*C; /以下程序段根据Delta的值求方程的解

17、 If(Delta0.0) cout0.0) cout“此方程有两个不同的实数解; cout(-B+sqrt(Delta)/(A+A); cout“和(-B-sqrt(Delta)/(A+A); else cout“此方程有两个一样的实数解-B/(A+A); break :continue :强迫退出循环,执行下一条语句提早终了本轮循环体的执行,判别循环条件,提早进入下一轮循环阐明:这两个语句通常与if语句同时运用,形如: if() break; if() continue当if条件成立时,退出循环或提早终了本轮循环体的执行循环特殊控制语句 例:允许反复地输入半径,计算并显示圆面积,直到输入的半径是0时为止即输入0是终止程序运转的信号;假设发现是输入的半径是负数,提示操作者重新输入。#include #define PI 3.1416 void

温馨提示

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

评论

0/150

提交评论