论C++程序的流程控制_第1页
论C++程序的流程控制_第2页
论C++程序的流程控制_第3页
论C++程序的流程控制_第4页
论C++程序的流程控制_第5页
已阅读5页,还剩32页未读 继续免费阅读

下载本文档

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

文档简介

1、程序或程序模块的三种基本结构程序或程序模块的三种基本结构 通过安排语句的排列顺序来决定程序流程由特定的条件决定执行哪个语句的程序结构由特定的条件决定某个语句重复执行次数的控制方式顺序结构顺序结构 按语句的先后顺序依次执行每一条语句语句1语句2顺序结构示意X=3;Y=4Z=X;X=YY=Z;程序段完成的功能是:交换程序段完成的功能是:交换X和和Y的值的值例:条件语句1语句2falsetrue语句格式: 含义: 如果条件成立,执行语句1,否则执行语句2流程示意: If多分支结构一多分支结构一条件分支结构条件分支结构 条件语句truefalse语句格式:含义: 如果条件成立,执行语句1,否则什么也不

2、做(即跳出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之后条件分支结构

4、条件分支结构 If多分支结构多分支结构If多分支结构是一种通过规范化的if嵌套所构成的条件分支结构,在这种结构中if语句嵌套在else之后使用格式:条件分支结构条件分支结构 例:输入一个0100分范围内的一个成绩,显示相应的等级:90100优8089良 7079中6069及格60分以下不及格#includevoid main( ) float score; coutscore; if(score100) cout“成绩必须在0100之间”; else if(score60) cout“不及格”endl: else if(score70) cout“及格”endl; else if(score8

5、0) cout“中”endl; else if(score90) cout“良”endl; else cout“优”endl; switch switch 多分支结构多分支结构 条件分支结构条件分支结构 switch语句格式:switch语句的含义:通过判断的值,决定程序的去向: 若的值与的值相同,则依次执行开始的各个语句序列,即执行,, 若的值与的值相同,则依次执行开始的各个语句序列,即执行,, 依此类推 若的值不等于任何列出的整型常量表达式的值,则执行从开始的语句序列 若没有语句,则什么也不做。在依次执行语句序列的过程中,如遇见break语句,则立即停止语句序列的执行,跳出switch分支

6、结构因此,若要让分支结构只执行与匹配的后的语句序列,而不往下执行下面的语句序列,应在该语句序列后加一条break语句在每一个后的语句序列后加break语句的switch分支结构,等同于if多分支结构。break语句在switch分支结构中的应用例1:输入一个表示星期的数字(0表示星期日,1表示星期二,6表示星期六),显示对应的英文单词。#includevoid main( ) int weekday; coutweekday; switch(weekday) case 0:cout“Sunday”endl;break; case 1:cout“Monday”endl;break; case 2

7、:cout“Tuesday”endl;break; case 3:cout“Wednesday”endl;break; case 4:cout“Thursday”endl;break; case 5:cout“Friday”endl;break; case 6:cout“Saturday”endl;break; /weekday的值为0时, 显示Sunday,break语句阻止了往下执行输出语句例2:输入一个0100分范围内的一个成绩,显示相应的等级:90100优8089良 7079中6069及格60分以下不及格(用switch多分支结构实现)#includevoid main( ) floa

8、t score; coutscore; switch(int(score/10) case 0: case 1: case 2: case 3: case 4: case 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、ca

9、se1、case2、case3、case4后的语句序列是空的,程序从这些入口点进入后,直接往下走,并在执行完case 5后的语句并遇见break语句时跳出switch分支。因此当值为05时均显示“不及格”。case 9后的语句为空,从case 9进入后,直接往下执行case 10后的语句序列,遇见break语句时跳出switch分支。因此,值为9和10时均显示“优”。循环结构循环结构 for 语句falsetruefor 循环结构示意for 循环含义首先进行,然后判断,若成立则执行;(若不成立,则结束循环)执行完后,再进行,然后再进行判断,若成立,则继续执行(否则跳出循环),执行完进行,然后再

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

11、为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; 例2:显示并输出如下所示的三角形: * 第0行:5空、1* * 第1行:4空、3* *第2行

12、: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页例3.11显示输出99乘法表。请看书本自主学习注:setw(2)功能是为下一个要输出的数据设置输

13、出宽度,该设置只对下一个数据输出有效。例如,cout1setw(8)20) cout0 循环体是一个基本语句:coutI-;分析:分析:第一次:I=20时,执行第一次循环,输出I的值20,同时在cout0不成立,不执行循环体,跳出循环。因此循环共执行了20次。do while 语句循环结构循环结构 do while 循环结构示意falsetruedo while 循环含义不判断条件直接执行一次循环体,循环体执行完后,再判断循环条件,若条件为真,则再次执行循环体,(若条件不成立,则跳出循环),在第二次循环体执行完后,继续先判断循环条件,条件满足,则执行循环体,直到条件不满足,跳出循环。do wh

14、ile 循环和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+; /循环体一次也没执行,因此无任何内容输出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的值求方程的解 If(Delt

温馨提示

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

评论

0/150

提交评论