第 分支结构PPT课件_第1页
第 分支结构PPT课件_第2页
第 分支结构PPT课件_第3页
第 分支结构PPT课件_第4页
第 分支结构PPT课件_第5页
已阅读5页,还剩30页未读 继续免费阅读

下载本文档

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

文档简介

1、第4章 分支结构顺序结构:程序按照语句的先后顺序进行数据处理。分支结构:程序要对问题进行判断,根据判断的结果,选择不同的处理方式,进行不同的操作。C语言用于实现分支的结构:if结构switch结构4.1.1 if语句if语句结构是一种常用的分支结构,是最简单的一种单分支结构,该结构构成一个二叉结构。第1页/共35页if语句的一般形式为。if() 语法功能: 先判断的值,若该值为“真”, 则:执行; 否则:什么也不执行。注意:1. :一般为条件表达式或逻辑表达式。 2. if语句中的一般情况下都是以复合语句的形式出现,即用一对花括号将语句括起来。如果语句只有一条,则可以不需要花括号3. if结构

2、的流程图 : 语句 A T F 4.1 if结构第2页/共35页4.1 if结构例1:从键盘任意输入两个实数a和b,要求a的值总是小于或等于b的值,然后输出这两个数a和b的值。分析:根据题意,要求ab。方案:先输入一个较小的数,赋给变量a,再输入一个较大的数,赋给变量b。问题:输入的限制对用户不合理。如果先输入的值较大,后输入的值较小,则结果为ab。方案修正:不论输入的大小顺序怎样,总是会有ab的结果。第3页/共35页4.1 if结构算法的流程图如图所示: 其中虚线框为if结构。程序的难点:交换a,b的值。程序见:example4_1.c例2:从键盘输入一个整数,求该数的绝对值。阅读例4-2的

3、问题和程序。 ab 定义浮点型变量a, b 交换 a, b 的值 输出 a, b 的值 F T 开始 结束 输入变量的值 a, b 第4页/共35页4.1 if结构4.1.2 if_else语句 if_else语句的一般形式为: if() else 式中 ,一般为条件表达式或逻辑表达式。 语法功能: 先判断的值,若其值为“真”, 则执行,否则执行。注意: 结构中的、与的规定同if结构。if_else结构的流程图如图所示。 语句 A F 语句 B T 第5页/共35页4.1 if结构例3:设计一个猜数游戏,由计算机产生一个随机数magic,从键盘输入一个数guess,若输入的数guess的大小等

4、于随机数magic,则输出“Gratulation! You Are right.”。否则,输出“Sorry! You Are Wrong.”。分析:计算机产生的随机数有两种: 伪随机数。真随机数。伪随机数:实际上是一组预先排好的一个数列,可通过函数rand()获取;真随机数:通过一个随机种子对伪随机数进行重新排列而得,该随机种子可以是任何数。如果取时间作为随机种子,则所得的随机数即为真随机数,真随机数可通过函数srand(unsigned seed)获取。 为简单起见,本题由计算机产生的数就用随机函数rand()直接取伪随机数。第6页/共35页4.1 if结构算法流程图如图所示:虚线框代表i

5、f_else结构。程序:example4_3.c思考: 怎样获取计算机的真随机数?修改程序example4_3.c : example4_3a.c第7页/共35页4.1 if结构4.1.3 if语句的嵌套在if或else的分支下又可以包含另一个if语句或if_else语句。嵌套的形式有两种:规则嵌套和任意嵌套。1规则嵌套规则嵌套的形式为:if() else if() else if () else if () else 第8页/共35页4.1 if结构规则嵌套的流程图如图所示:第9页/共35页4.1 if结构例4:从键盘输入+、*、/中的任一个,输出对应的英文单词:plus、minus、mut

6、iply、divide,若输入的不是这4个字符中的任一个,则输出“Sorry you are wrong”。算法的流程图如图所示: 程序 程序:example4_4.c第10页/共35页4.1 if结构1. 在if_else嵌套的结构中,else总是与离它最近的上一个if配对。2. 程序的书写可按缩进对齐方式,增加程序代码的美观和程序的可读性。3. if_else结构的嵌套层次不提倡太多,否则会影响程序的执行效率,并且容易出现判断上的漏洞,导致程序出现不正确的结果。4. 良好的程序书写风格有助于对程序的理解,请注意程序的书写风格,养成良好的编程习惯。注意第11页/共35页4.1 if结构2任意

7、嵌套任意嵌套是在if_else结构中的任一执行框中插入if结构或if_else结构。例5: 编写程序,通过输入x的值,计算阶跃函数y的值。100010 xyxx第12页/共35页4.1 if结构算法的流程图如图所示: 两个虚线框均为if_else结构。 程序:examle4_5.c请思考规则嵌套的算法,并写出程序上机验证。第13页/共35页4.1 if结构 对多重if_else结构,最容易出现问题的是if与else配对错误。阅读程序:example4_6.c 、example4_7.c 思考if与else的配对关系。注意第14页/共35页4.2 switch结构if语句适合两种分支情况进行选择

8、。如果多种分支的情况,可采用嵌套的if语句结构。 存在的问题: 当嵌套的分支较多时,程序的效率和可读性降低。解决方案:用switch结构处理多路分支的情形。第15页/共35页4.2 switch结构4.2.1 switch语句switch语句的一般形式为: switch() case:语句序列1; case:语句序列2; case:语句序列n; default:语句序列(n+1); 第16页/共35页4.2 switch结构注意:(1) 的值必须是整型、字符型或者枚举类型;(2) 语句序列i允许有多条语句,不需要将语句序列用一对花括号括起;(3) 可以为任何表达式。(4) switch语句的语

9、法规则是: 先计算的值; 再依次判断与哪一个的值相等; 若的值等于的值, 则:从语句序列i开始执行语句,直到语句序列(n+1)为止; 若的值不等于任何一个的值, 则:执行default后面的语句序列(n+1)。第17页/共35页4.2 switch结构switch语句一般形式的流程图如图所示:第18页/共35页4.2 switch结构例6:某班级准备周末举行一个班级活动,但活动内容要根据表中所示的天气情况来决定:天 气活 动 内 容晴 天登 山有风无雨郊 游下 雪堆 雪 人下 雨不举行班级活动其他天气参观博物馆分析:分别用整数1、2、3、4代表晴天、有风无雨、下雪和下雨这4种天气情况。通过输入

10、天气情况weather的值,来确定活动场所。第19页/共35页4.2 switch结构算法流程图如图所示:程序: example4_8.c结论: 程序不完全正确; 不能正确表达每一种情况。存在的问题: 程序不能正确分支;解决方案: 使用分支语句break。第20页/共35页4.2 switch结构4.2.2 break语句在switch语句中的作用break语句起中断和跳出的作用。 可以用在switch分支语句和循环语句中。使用方法: 在switch语句中,在需要独立执行的后面加上一条分支语句:break;switch条件分支互相独立的语句形式为:第21页/共35页4.2 switch结构sw

11、itch ()case : ; break;case : ; break;case : break;case : ; break;default: ;第22页/共35页4.2 switch结构switch条件分支互相独立语句的流程图:思考: 该结构的语法规则。第23页/共35页4.2 switch结构例7:修改上面程序的算法,使其能满足实际的需要。分析:参照图4-13所示的流程图,在每个分支的语句序列后面加上break语句即可。程序:example4_9.c深化性练习:画出该算法的流程图。第24页/共35页4.2 switch结构 switch结构的灵活应用: 可根据实际应用的需要,将两种不同

12、形式的switch结构组合起来。例8:从键盘输入一个字符,判断其是否为a(可代表abort)或r(可代表retry)或f(可代表fail),并输出相应信息(输入时不区分大小写)。分析:问题的关键是对输入的字母a、r和f,不论它们是大写还是小写,所对应的操作都是一样的。 利用switch 结构的特点,设计出该问题的算法流程图如图所示。第25页/共35页4.2 switch结构 根据流程图不难写出其程序: example4_10.c第26页/共35页4.3 程 序 范 例例9:求解一元二次方程ax2+bx+c=0的根(a0),a、b、c均为实数,其值由键盘输入。分析:一元二次方程的一般解为: 21

13、242xbbacxa 其中a的值不能等于0,否则方程无解。方程的求解需要考虑以下3种情况: b24ac0,方程有两个不等的实根:21242xbbacxa 第27页/共35页4.3 程 序 范 例 b24ac=0 方程有两个相等的实根: b24ac0 方程有两个共轭复根:122bxxa 212422xbacbixaa 算法流程图如图所示:程序: example4_11第28页/共35页4.3 程 序 范 例程序是怎样实现三个判别条件的?还可以设计怎样的算法?求出一元二次方程的根。思考第29页/共35页4.3 程 序 范 例例10: 运输费用的计算问题。货物的运输费用与距离和重量有关,距离S越远,

14、每公里的运费越低。总运输费用Exp的计算公式为:Exp=P*W*S*(1d),式中P为每公里每吨货物的基本运费、W为货物重量(t)、S为运输距离(km)、d为折扣,折扣率d与距离有关,具体标准如下: 0S250没有折扣(d=0) 250S500折扣2%(d=2%) 500S1 000折扣5%(d=5%) 1 000S2 000折扣8%(d=8%) 2 000S3 000折扣10%(d=10%) 3 000S折扣15%(d=15%)第30页/共35页4.3 程 序 范 例分析:根据折扣率与距离的关系,折扣率发生变化时,距离为250km的倍数。从03 000km,将距离S按250km的倍数分段,一

15、共可分为13段,每一段都对应着一个固定的折扣率,如表所示:S/2500123456789101112d(%)02581015第31页/共35页4.3 程 序 范 例算法流程图如图所示:程序: example4_12.c思考:程序中语句default : d=100; 起什么作用?怎样防止由于输入数据错误而发发生的错误?是否还有其他算法?阅读并分析【例4-13】第32页/共35页4.4 本 章 小 结(1) 程序分支结构的几种形式: if语句、if_else语句、if嵌套语句和switch语句等。(2) 分支语句的共同特点: 先进行条件判断,再决定下一步做什么。(3) if的合理嵌套可以实现多分支选择,需注意else与if的配对。(4)过多的if_else嵌套会降低程序的效率和可读性。(5) switch是一种多分支选择语句,可读性比if语句要强。(6)要注意在switch语句中正确地使用brea

温馨提示

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

评论

0/150

提交评论