第三章 C++的流程控制.ppt_第1页
第三章 C++的流程控制.ppt_第2页
第三章 C++的流程控制.ppt_第3页
第三章 C++的流程控制.ppt_第4页
第三章 C++的流程控制.ppt_第5页
已阅读5页,还剩24页未读 继续免费阅读

下载本文档

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

文档简介

第三章,C+程序的流程控制,第三章C+程序的流程控制,本章内容主要有:流程控制与程序结构条件分支结构循环结构其他流程控制,学习的目掌握流程控制与程序结构掌握条件分支结构掌握循环结构了解其他流程控制,第三章C+程序的流程控制,3.1流程控制与程序结构,高级语言源程序的基本组成单位是语句。在C+程序中,语句是最小的可执行单元,一条语句由一个分号结束。C+程序的语句按其功能可以划分为两类:操作运算语句流程控制语句为了能更好的发挥程序强大的功能。就需要有对程序流程进行控制的语句。基本的控制结构有三种:顺序结构,选择结构,循环结构,3.1流程控制与程序结构,1顺序结构顾名思义,所谓顺序结构,就是指按照语句在程序中的先后次序一条一条的顺次执行。顺序控制语句是一类简单的语句,上述的操作运算语句即是顺序控制语句,包括表达式语句,输入/输出等。示意图如书图3-1所示。,3.1流程控制与程序结构,2条件分支结构顺序结构就像是一条流水线,将程序语句逐一执行,更多的时候我们需要对程序环境进行判断,当满足一定条件的,去执行相应的命令,这就要用到条件结构。条件结构语句分两种:条件分支语句if和开关语句switch。,3.1流程控制与程序结构,3循环结构当程序中有重复的工作要做时,就需要用到循环结构。它的应用使得大量重复的工作变得更容易,提高了程序的效率。C+提高了三种循环语句:while、dowhile和for上述程序结构的一个共同的特点是:只有一个入口和一个出口,因此程序结构之间的衔接非常简单:一个结构的出口就是另一结构的入口。,3.2条件分支结构,1.if语句if语句的语法格式为:if(条件表达式)或:if(条件表达式)语句;语句序列;它的意义为:如果条件表达式进行一次测试,且测试为真,则执行后面的语句。当语句序列只包含一条语句时,包围该语句序列的花括号可以省略。,例如:判断用户的输入,如果输入的数值大于0,则在屏幕上显示“正数”。#includevoidmain()inta;cina;if(a0)cout”正数”a;if(a0)cout”正数”endl;elsecout”不是正数”c)max=a;elsemax=c;elseif(bc)max=b;elsemax=c;,3.2条件分支结构,当多个ifelse语句嵌套时,在容易误解的地方可以按照语法关系加上花括号来标识逻辑关系的正确性。如上例可以改写为:if(ab)if(ac)max=a;elsemax=c;elseif(bc)max=b;elsemax=c;,在将两种格式的if语句混合起来进行嵌套,一定要注意正确理解其含义。如:x=9;if(x2)if(x2)if(x2)if(xkey;if(key=123)cout欢迎您,Rose.n;elseif(key=246)cout欢迎您,Joe.n;elseif(key=999)cout欢迎您,David.n;elsecout密码错误!n程序终止07n;,注意:当嵌套较多(分支较多)时,程序会显得非常繁琐、可读性差、容易出错。这时通常使用C+的switch语句。,3.2条件分支结构,4switch语句switch语句又称为开关语句,它的用途类似多分支的if语句。但这种多路选择仅取决于表达式的不同值;用switch语句更加直观。switch语句的语法格式为:switch(整数表达式)case常量表达式1:;case常量表达式2:;case常量表达式n:;default:;,3.2条件分支结构,语句执行时,先对switch后的表达式进行计算,将结果与case后的常量表达式进行比较,如果相等,则转去执行该case后的语句,最后由中断语句break跳出整个switch语句。没有break,则执行完case语句,还接着执行后面的case的语句序列。其中,default是一个可选的语句,可以不用。当所有case都不能与switch相匹配时,转去执行default后面的语句。注意:表达式只能是整型、字符型或枚举型,常量表达式的类型必须与switch中的表达式类型一致。,例如,根据考试成绩的等级输出百分制分数段:chargrade;/.switch(grade)caseA:cout“85100n”;break;caseB:cout“7084n”;break;caseC:cout“6069n”;break;caseD:cout“60n”;break;default:coutkey;switch(key)case123:cout欢迎您,Rose.n;break;case246:cout欢迎您,Joe.n;break;case999:cout欢迎您,David.n;break;default:cout密码错误!n程序终止!an;,3.3循环控制语句,C+提供了三种循环控制语句:while语句,dowhile语句,for语句。三种语句都由相似的三部分组成:进入循环的条件,循环体,退出循环的条件;完成的功能也类似。所不同的只是三者进入与退出循环的方式不同。while语句:当条件满足时进入,重复执行循环体,直到条件不满足时退出。dowhile语句:无条件进入,执行一次循环体后判断是否满足条件,当条件满足时重复执行循环体,直到条件不满足时退出。for语句:当循环变量在指定范围内变化时,重复执行循环体,直到循环变量超出了指定的范围时退出。,3.3循环控制语句,1.while循环格式:while(条件表达式)语句;/循环体条件表达式:整型、字符型、浮点型和双精度型,通常为关系表达式或逻辑表达式。语句:可以单语句、复合语句和空语句,称循环体,当循环体用单语句写不下时用复合语句。,3.3循环控制语句,它的执行过程:对条件表达式求值,若值为真(非0)则执行步骤,否则转步骤;执行循环体中的语句;返回;终止循环,去执行while语句的下语句。其执行的流程图如书所示。特点:先判断,后执行。,例子(计算100之内的奇数之和):#includevoidmain()intn=1;/奇数intsum=0;/奇数的累加和while(n100)/n不能超过100sum+=n;/累加n+=2;/修改为下一个奇数cout100之内的奇数和是:sum;利用循环对n进行判断,当n100时,更新总和sum的值为sum的原值加上n的值。然后n自增2,再判断循环条件是否成立,直到n大于100时结束循环。在这个程序中条件表达式中的n起到了控制循环何时结束的作用。在循环体中,要为这样的控制变量赋新值要确保它的值最终能让条件表达式为假。否则,进入死循环。,计算sum=1+2+3+10的dowhile循环结构如下:sum=0;i=1;/循环变量初始化do/循环体sum=sum+i;i+;/改变循环变量的值while(i=10)/判断条件与while语句不同的是:while语句有可能一次都不执行循环体,而dowhile循环至少执行一次,因为直到程序到达循环体的尾部遇到while时,才知道继续条件是什么。,3.3循环控制语句,注意:(1)如果循环体包含一个以上的语句,则应该用花括号括起来,以块语句形式出现。(2)仔细定义循环变量的初始值和判断条件的边界值。(3)对条件表达式的计算总是比循环体的执行多一次。这是因为最后一次判断条件为假时不执行循环体。(4)当循环体不实现任何功能时,要使用空语句作为循环体,表示为:while(条件表达式);(5)循环体中,改变循环变量的值很重要。如果循环变量的值恒定不变,或者当条件表达式为一常数时,将会导致无限循环(也即死循环)。若要退出一个无限循环,必须在循环体内用break等语句退出。,3.3循环控制语句,2.dowhile循环格式:do语句/循环体while(条件表达式);/;不能少条件表达式及语句的规格同while语句一样。它的执行过程:执行一遍循环体;对条件表达式求值,若值为真(非0)则执行步骤,否则转步骤;终止循环,去执行dowhile语句的下一语句。其执行的流程图如书所示。特点:先执行,后判断。,例子(计算100之内的奇数之和用dowhile循环结构)#includevoidmain()intn=1;intsum=0;dosum+=n;n+=2;while(n100);cout100之内的奇数和是:sum;,计算sum=1+2+3+10的dowhile循环结构如下:sum=0;i=1;/循环变量初始化do/循环体sum=sum+i;i+;/改变循环变量的值while(i=10)/判断条件与while语句不同的是:while语句有可能一次都不执行循环体,而dowhile循环至少执行一次,因为直到程序到达循环体的尾部遇到while时,才知道继续条件是什么。,3.3循环控制语句,3.for循环for循环是一种比较特殊的循环体,它能将循环变量初始化、循环体条件以及循环变量的改变都放在同一行语句中。格式for(表达式1;表达式2;表达式3)语句/循环体表达式1为循环变量赋的初值,表达式2为循环条件,表达式3为循环变量进行改变。,执行过程:对表达式1求值;对表达式2求值,若真则执行步骤;执行循环体;对表达式3求值;转去执行;结束循环,去执行for语句的下一语句。,3.3循环控制语句,例如,计算sum=1+2+3+10的for循环结构如下:sum=0;for(i=1;i=10;i+)/初始化,判断条/件,修改方式,步长都在顶部描述sum+=i;/循环体相对简洁由此例可见,for语句将循环体所用的控制都放在循环顶部统一表示,显得更直观。,3.3循环控制语句,除此之外,for语句还充分表现了其灵活性。比如,表达式3并不仅限于修正循环变量的值,还可以是任何操作。例如:for(sum=0,i=1;i=10;sum+=i,i+);注意,此时for语句没有循环体,也即循环体是一个空语句。,有时,表达式2被省略。即不判断循环条件,循环无终止进行下去。这时候,需要在循环体中有跳出循环的控制语句。最简单的表示无限循环的方式如下:for(;)/分号不能省略三个表达式都可省略。即不设初值,不判断条件(认为表达式2为真),循环变量不变化,无终止执行循环体的语句。此时为无限循环,需要用别的方法退出,如return,break,goto等。,3.3循环控制语句,例子(韩信点兵):内容是:韩信带兵不足百人,3人一行排列多一个,7人一行排列多两个,5人一行排列正好。根据题意,可以根据for循环的计数特点,将可能的数一一列出,计算正确,则为人数。,#includevoidmain()inti,a,b,c;for(i=1;inum;if(num0)/若num是复数则退出循环break;root=sqrt(num);coutnum;if(num0)cout无效数!;/若num是负数则回到循环开始处continue;root=sqrt(num);coutroot;i+;,例如:输出1100之间的不能被7整除的数。for(inti=1;i=100;i+)if(i%7=0)continue;coutiendl;当i被7整除时,执行continue语句,结束本次循环,即跳过cout语句,转去判断i=100是否成立。只有i不能被7整除时,才执行cout函数,输出i。,3.4其他流程控制,1.goto(无条件转向语句)goto为无条件转向语句,可以控制程序流程转向到指定标号名称的地方。格式:goto标号名;/为合法的标识符-标号名:语句;标号与goto语句在同一个函数中,可以在goto语句的前面和后面。goto语句与if语句一起使用,满足条件时跳出多重循环。而break和continue仅包含它的本次循环有效。,如:inta=1,b=0;LABEL:a+;b+=a;if(a10

温馨提示

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

评论

0/150

提交评论