C语言程序设计教程 第4版 普通高等教育“十一五”国家级规划教材 教学课件 ppt 作者 李丽娟 C语言程序设计教程(第4版)_第4章_分支结构

上传人:E**** 文档编号:89453019 上传时间:2019-05-25 格式:PPTX 页数:36 大小:680.19KB
返回 下载 相关 举报
C语言程序设计教程 第4版  普通高等教育“十一五”国家级规划教材  教学课件 ppt 作者  李丽娟 C语言程序设计教程(第4版)_第4章_分支结构_第1页
第1页 / 共36页
C语言程序设计教程 第4版  普通高等教育“十一五”国家级规划教材  教学课件 ppt 作者  李丽娟 C语言程序设计教程(第4版)_第4章_分支结构_第2页
第2页 / 共36页
C语言程序设计教程 第4版  普通高等教育“十一五”国家级规划教材  教学课件 ppt 作者  李丽娟 C语言程序设计教程(第4版)_第4章_分支结构_第3页
第3页 / 共36页
C语言程序设计教程 第4版  普通高等教育“十一五”国家级规划教材  教学课件 ppt 作者  李丽娟 C语言程序设计教程(第4版)_第4章_分支结构_第4页
第4页 / 共36页
C语言程序设计教程 第4版  普通高等教育“十一五”国家级规划教材  教学课件 ppt 作者  李丽娟 C语言程序设计教程(第4版)_第4章_分支结构_第5页
第5页 / 共36页
点击查看更多>>
资源描述

《C语言程序设计教程 第4版 普通高等教育“十一五”国家级规划教材 教学课件 ppt 作者 李丽娟 C语言程序设计教程(第4版)_第4章_分支结构》由会员分享,可在线阅读,更多相关《C语言程序设计教程 第4版 普通高等教育“十一五”国家级规划教材 教学课件 ppt 作者 李丽娟 C语言程序设计教程(第4版)_第4章_分支结构(36页珍藏版)》请在金锄头文库上搜索。

1、C语言程序设计教程 (第4版),第4章 分支结构,李丽娟 2013年2月,第4章 分支结构,本章主要内容 1. if语句的基本结构 2.ifelse语句基本结构 3. if语句的嵌套结构 4. switch语句的基本结构 5.程序案例分析,第4章 分支结构,顺序结构:程序按照语句的先后顺序进行数据处理。 分支结构:程序要对问题进行判断,根据判断的结果,选择不同的处理方式,进行不同的操作。 C语言用于实现分支的结构: if结构 switch结构 4.1.1 if语句 if语句结构是一种常用的分支结构,是最简单的一种单分支结构,该结构构成一个二叉结构。,if语句的一般形式为。 if() 语法功能:

2、 先判断的值,若该值为“真”, 则:执行; 否则:什么也不执行。 注意: 1. :一般为条件表达式或逻辑表达式。 2. if语句中的一般情况下都是以复合语句的形式出现,即用一对花括号将语句括起来。如果语句只有一条,则可以不需要花括号 3. if结构的流程图 :,4.1 if结构,4.1 if结构,例1:从键盘任意输入两个实数a和b,要求a的值总是小于或等于b的值,然后输出这两个数a和b的值。 分析:根据题意,要求ab。 方案:先输入一个较小的数,赋给变量a,再输入一个较大的数,赋给变量b。 问题:输入的限制对用户不合理。如果先输入的值较大,后输入的值较小,则结果为ab。 方案修正:不论输入的大

3、小顺序怎样,总是会有ab的结果。,4.1 if结构,算法的流程图如图所示: 其中虚线框为if结构。 程序的难点:交换a,b的值。 程序见:example4_1.c 例2:从键盘输入一个整数,求该数的绝对值。 阅读例4-2的问题和程序。,4.1 if结构,4.1.2 if_else语句 if_else语句的一般形式为: if() else 式中 ,一般为条件表达式或逻辑表达式。 语法功能: 先判断的值,若其值为“真”, 则执行,否则执行。 注意: 结构中的、与的规定同if结构。 if_else结构的流程图如图所示。,4.1 if结构,例3:设计一个猜数游戏,由计算机产生一个随机数magic,从键

4、盘输入一个数guess,若输入的数guess的大小等于随机数magic,则输出“Gratulation! You Are right.”。否则,输出“Sorry! You Are Wrong.”。 分析:计算机产生的随机数有两种: 伪随机数。真随机数。 伪随机数:实际上是一组预先排好的一个数列,可通过函数rand()获取; 真随机数:通过一个随机种子对伪随机数进行重新排列而得,该随机种子可以是任何数。如果取时间作为随机种子,则所得的随机数即为真随机数,真随机数可通过函数srand(unsigned seed)获取。 为简单起见,本题由计算机产生的数就用随机函数rand()直接取伪随机数。,4.

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

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

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

8、套的分支较多时,程序的效率和可读性降低。 解决方案:用switch结构处理多路分支的情形。,4.2 switch结构,4.2.1 switch语句 switch语句的一般形式为: switch() case:语句序列1; case:语句序列2; case:语句序列n; default:语句序列(n+1); ,4.2 switch结构,注意: 的值必须是整型、字符型或者枚举类型; 语句序列i允许有多条语句,不需要将语句序列用一对花括号括起; 可以为任何表达式。 switch语句的语法规则是: 先计算的值; 再依次判断与哪一个的值相等; 若的值等于的值, 则:从语句序列i开始执行语句,直到语句序列

9、(n+1)为止; 若的值不等于任何一个的值, 则:执行default后面的语句序列(n+1)。,4.2 switch结构,switch语句一般形式的流程图如图所示:,4.2 switch结构,例6:某班级准备周末举行一个班级活动,但活动内容要根据表中所示的天气情况来决定:,分析: 分别用整数1、2、3、4代表晴天、有风无雨、下雪和下雨这4种天气情况。 通过输入天气情况weather的值,来确定活动场所。,4.2 switch结构,算法流程图如图所示: 程序: example4_8.c 结论: 程序不完全正确; 不能正确表达每一种情况。 存在的问题: 程序不能正确分支; 解决方案: 使用分支语句

10、break。,4.2 switch结构,4.2.2 break语句在switch语句中的作用 break语句起中断和跳出的作用。 可以用在switch分支语句和循环语句中。 使用方法: 在switch语句中,在需要独立执行的后面加上一条分支语句:break; switch条件分支互相独立的语句形式为:,4.2 switch结构,switch () case : ; break; case : ; break; case : break; case : ; break; default: ; ,4.2 switch结构,switch条件分支互相独立语句的流程图: 思考: 该结构的语法规则。,4.

11、2 switch结构,例7:修改上面程序的算法,使其能满足实际的需要。 分析:参照图4-13所示的流程图,在每个分支的语句序列后面加上break语句即可。 程序:example4_9.c 深化性练习:画出该算法的流程图。,4.2 switch结构, switch结构的灵活应用: 可根据实际应用的需要,将两种不同形式的switch结构组合起来。 例8:从键盘输入一个字符,判断其是否为a(可代表abort)或r(可代表retry)或f(可代表fail),并输出相应信息(输入时不区分大小写)。 分析:问题的关键是对输入的字母a、r和f,不论它们是大写还是小写,所对应的操作都是一样的。 利用switc

12、h 结构的特点,设计出该问题的算法流程图如图所示。,4.2 switch结构,根据流程图不难写出其程序: example4_10.c,4.3 程 序 范 例,例9:求解一元二次方程ax2+bx+c=0的根(a0),a、b、c均为实数,其值由键盘输入。 分析:一元二次方程的一般解为:,其中a的值不能等于0,否则方程无解。 方程的求解需要考虑以下3种情况: b24ac0,方程有两个不等的实根:,4.3 程 序 范 例, b24ac=0 方程有两个相等的实根:, b24ac0 方程有两个共轭复根:,算法流程图如图所示: 程序: example4_11,4.3 程 序 范 例,程序是怎样实现三个判别条

13、件的? 还可以设计怎样的算法?求出一元二次方程的根。,思考,4.3 程 序 范 例,例10: 运输费用的计算问题。货物的运输费用与距离和重量有关,距离S越远,每公里的运费越低。总运输费用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

14、%),4.3 程 序 范 例,分析:根据折扣率与距离的关系,折扣率发生变化时,距离为250km的倍数。从03 000km,将距离S按250km的倍数分段,一共可分为13段,每一段都对应着一个固定的折扣率,如表所示:,4.3 程 序 范 例,算法流程图如图所示: 程序: example4_12.c 思考: 程序中语句 default : d=100; 起什么作用? 怎样防止由于输入数据错误而发发生的错误? 是否还有其他算法? 阅读并分析【例4-13】,4.4 本 章 小 结,(1) 程序分支结构的几种形式: if语句、if_else语句、if嵌套语句和switch语句等。 (2) 分支语句的共同

15、特点: 先进行条件判断,再决定下一步做什么。 (3) if的合理嵌套可以实现多分支选择,需注意else与if的配对。 (4)过多的if_else嵌套会降低程序的效率和可读性。 (5) switch是一种多分支选择语句,可读性比if语句要强。 (6)要注意在switch语句中正确地使用break语句,使程序能正常地从switch分支中跳出,避免发生逻辑错误。 (7)建议在switch语句中,都要设置default标号,避免出现逻辑错误。 (8)不提倡在if语句中内嵌一个switch结构语句,反之亦然。,本章练习,一、填空题 【题4.1】 【题4.13】中的奇数题号。 二、单选题 【题4.14】 【题4.27】中的奇数题号。 三、编程题 【题4.30】 【题4.32】 【题4.34】 【题4.36】 【题4.37】,

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 高等教育 > 大学课件

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号