第4章分支语句.ppt_第1页
第4章分支语句.ppt_第2页
第4章分支语句.ppt_第3页
第4章分支语句.ppt_第4页
第4章分支语句.ppt_第5页
已阅读5页,还剩34页未读 继续免费阅读

下载本文档

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

文档简介

03 10 1 39 第四章分支语句 4 1if结构 4 2Switch语句 4 3程序范例 03 10 2 39 4 1if结构 顺序结构的程序只能以顺序的方式处理数据 但实际问题要求计算机能够对问题进行判断 根据判断的结果 选择不同的处理方式 这就要求程序本身具有判断和选择能力 分支结构正是为解决这类问题而设定的 C语言用于实现分支有if结构和switch结构 4 1 1if语句if结构是一种常用的分支结构 是最简单的一种单分支结构 03 10 3 39 一般形式为 if 一般为条件表达式或逻辑表达式 功能 先判断的逻辑值 若该逻辑值为 真 则执行 否则 什么也不执行 注意 if语句中的一般情况下都是以复合语句的形式出现 if结构的流程图 03 10 4 39 例4 1 从键盘任意输入两个实数 然后按其代数值从小到大输出这两个数 先制定算法的流程图 如图所示 虚线框为if结构 根据流程图可以很方便地写出解决这个问题的程序 03 10 5 39 exam4 1 c按升序输出两个数 includemain floata b t scanf f f 03 10 6 39 例4 2 从键盘输入一个整数 求该数的绝对值 该问题算法的流程图 03 10 7 39 根据流程图写出的程序如下 exam4 2 c求整数的绝对值 includemain intnum scanf d 03 10 8 39 4 1 2if else语句 if else语句是一种双分支结构 其一般形式为 if else 一般为条件表达式或逻辑表达式 功能是 先判断的值 若其值为 真 则执行 否则执行 if else结构的流程图 03 10 9 39 例4 3 设计一个猜数游戏 由计算机产生一个随机数magic 从键盘输入一个数guess 若输入的数guess的大小等于随机数magic 则输出 Youareright 否则 输出 Youarewrong 03 10 10 39 根据流程图可写出程序如下 exam4 3 c猜数游戏的程序 include includemain intguess magic magic rand scanf d 03 10 11 39 4 1 3if语句的嵌套 if语句的嵌套 是指在if或else的分支下又可以包含另一个if语句或if else语句 嵌套的形式有规则嵌套和任意嵌套两种 if语句的规则嵌套形式如下 if elseif elseif elseif else 03 10 12 39 if else的规则嵌套流程图 03 10 13 39 例4 4 从键盘输入 中的任一个 输出对应的英文单词 plus minus mutiply divide 若输入的不是这四个字符中的任一个 则输出 error 算法的流程图如图所示 虚线框所示为if else的规则嵌套 03 10 14 39 includemain charch ch getchar if ch printf plus n elseif ch printf minus n elseif ch printf multiply n elseif ch printf divide n elseprintf error n 03 10 15 39 注意 if与else的匹配关系 else总是与离它最近的上一个if配对 将每一对if else结构采用缩进对齐方式 可以增加程序的可读性 良好的程序书写风格有助于对程序的理解 例4 5 计算阶跃函数y的值 03 10 16 39 算法的流程图如图 两个虚线框均为if else结构 03 10 17 39 根据流程图写出的程序如下 exam4 5 c计算阶跃函数y的值 includemain floatx y printf inputx n scanf f 对多重if 最容易犯的错误是if与else配对错误 else总是与离它最近的上一个if配对 03 10 18 39 4 2Switch结构 当嵌套if分支较多时 程序变得复杂冗长 可读性降低 C语言提供了switch开关语句专门处理多路分支的情形 使程序变得简洁 4 2 1switch语句switch语句的一般形式为 switch case 语句序列1 case 语句序列2 case 语句序列n default 语句序列 n 1 03 10 19 39 常量表达式 值必须是整型 字符型或者枚举类型语句序列 允许有多条语句 可以为任何表达式 功能 先计算的值 再从上到下地判断与哪一个的值相等 如果的值等于的值 则从语句序列i开始执行 直到语句序列 n 1 为止 若的值不等于任何一个的值 是执行default后面的语句序列 n 1 03 10 20 39 switch语句一般形式的流程图 03 10 21 39 例4 6 根据下面表所示的天气情况 决定活动的场所 分别用整数0 1 2和3代表下雨 下雪 晴天和有风无雨天气 采用switch语句的一般形式 03 10 22 39 例4 6switch语句一般形式的流程图 03 10 23 39 根据图所示的流程图写出的程序如下所示 exam4 6 c根据天气情况决定活动场所 includemain intweather scanf d 03 10 24 39 程序运行结果 输入 2输出 fine athillwind tooutskirtother athome 发现 如果输入的天气值为0 即天气情况为下雨 则活动场所为所有地方 显然这是与题意不相符合的 程序是错误的 解决这个问题必须要用到分支语句 break 03 10 25 39 4 2 2break语句在switch语句中的作用 如果是一个条件对应着一组独立的操作 那么在switch语句的一般形式中 每一个完成后都要加上一条分支语句 break switch条件分支互相独立的形式 switch case break case break case break case break default 03 10 26 39 Switch结构实现了完全地独立分支 功能 先计算的值 再从上到下地判断与哪一个的值相等 如果的值等于i的值 则执行i 执行完后 跳出switch结构 执行switch结构外的下一条语句 03 10 27 39 例4 7 将例4 6改写成具有独立分支的switch结构 includemain intweather scanf d 程序运行时 任何一种天气情况都只会对应出现一种运动场所 03 10 28 39 例4 8 从键盘输入一个字符 判断其是否为a 可代表abort 或r 可代表retry 或f 可代表fail 并输出相应信息 输入时不区分大小写 采用switch结构 其算法流程图如图 03 10 29 39 exam4 8 c字符输入判断 includemain charch printf Abort Retry Fail n ch getchar switch ch case a case A printf nAbort n break case r case R printf nRetry n break case f case F printf nFail n break default printf nerror n 03 10 30 39 4 3程序范例 例4 9 求解任意的一元二次方程ax2 bx c 0的根 a b c的值由键盘输入 分析 对系数a b c考虑以下情形1 a 0 b0 则x c b b 0 则 若c 0 则x无定根 若c0 则x无解 2 a0 b2 4ac 0 有两个不等的实根 b2 4ac 0 有两个相等的实根 b2 4ac 0 有两个共轭复根 采用嵌套的if结构 考虑算法流程图 03 10 31 39 03 10 32 39 exam4 9 c求一元二次方程的根 include includemain floata b c s x1 x2 doublet printf pleaseinputa b c n scanf f f f 03 10 33 39 elseprintf noroot n else s b b 4 a c if s 0 0 if s 0 0 t sqrt s x1 0 5 b t a x2 0 5 b t a printf Therearetwodifferentroots n 5 2fand 5 2f n x1 x2 03 10 34 39 elseprintf Therearetwoequalroots n 5 2f n 0 5 b a else t sqrt s x1 0 5 b a x2 abs 0 5 t a printf Therearetwovirtualroots n printf 5 2f 5 2fi t t 5 2f 5 2fi n x1 x2 x1 x2 03 10 35 39 例4 10 运输费用的计算问题 距离S越远 每公里的运费越低 设每公里每吨货物的基本运费为P 货物重量为W 吨 距离为S 折扣为d 则总运输费用f的计算公式为 f P W S 1 d 其中折扣数d与距离有关 具体标准如下 0 S 250km没有折扣250 S 500折扣2 500 S 1000折扣5 1000 S 2000折扣8 2000 S 3000折扣10 3000 S折扣15 分析 折扣点的变化处都发生在距离为250的倍数上 如表所示 03 10 36 39 流程图简图如左图 03 10 37 39 exam4 10 c运输费用的计算 includemain intc s floatp w d f printf pleaseinputp w s n scanf f f d switch c 03 10 38 39 case0 d 0 break case1 d 2 break case2 case3 d 5 break case4 case5 case6 case7 d 8 break case8 case9 case10 case11 d 10 break case12 d 15 break

温馨提示

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

评论

0/150

提交评论