




已阅读5页,还剩78页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第四章选择结构程序设计 教学目的与要求 1 熟练掌握if else的三种语法2 领会switch与break语句的作用教学内容 1 关系运算符与关系表达式2 逻辑运算符与逻辑表达式3 if语句4 switch语句 C语言程序设计 例 银行存款的例子设银行定期存款年利率rate一年3 8 二年4 50 三年5 22 五年及以上5 76 并已知存款期为n年 存款本金为capital元 编程计算n年后本息之和deposit C语言程序设计 例 用C语言实现图示的分段函数 sin x xx 0y 1x 0分析问题 建立数学模型 选择公式 确定算法 输入x 判断x值 根据x值 计算y值 输出y值 显然 顺序结构不能实现 需用选择结构 C语言程序设计 2 写出算法描述 C语言程序设计 3 编写程序 用计算机语言写出实现算法的程序 include includevoidmain floatx y printf Enterx scanf f C语言程序设计 3 编写程序 用计算机语言写出实现算法的程序 include includevoidmain floatx y printf Enterx scanf f C语言程序设计 4 输入 编辑 程序 编译 连接 执行程序 输出结果 测试 C语言程序设计 选择结构是三种基本结构 顺序 选择 循环 之一 选择结构的特点是 程序的流程是由多条支路构成的 在程序的一次执行过程中 根据不同的情况 只有一条支路被选择执行 而其它支路上的语句被直接跳过 在C语言中 提供了if语句和switch语句来实现选择结构 4 1关系运算符和关系表达式 4 1 1关系运算符及其优先次序关系运算 是对两个量进行 比较运算 关系运算符 4 1关系运算符和关系表达式 4 1 1关系运算符及其优先次序 3 关于优先级别 前4种关系运算符的优先级别相同 后两种也相同 前4种高于后两种 算术运算符 关系运算符 赋值运算符 高低 4 1关系运算符和关系表达式 4 1 1关系运算符及其优先次序例 c a b等价于c a b 关系运算符的优先级低于算术运算符a b c等价于 a b c 优先级高于 a bc等价于a b c 关系运算符的优先级高于赋值运算符 4 1关系运算符和关系表达式 4 1 2关系表达式1 用关系运算符将两个表达式 算术 关系 逻辑 赋值表达式等 连接起来的有意义的表达式 称为关系表达式 如 x 0 a A a a b b Y Y 说明 数值量比较 数字的大小字符量比较 ASCII码比较 4 1关系运算符和关系表达式 4 1 2关系表达式2 关系表达式的值是一个逻辑值 即 真 或 假 C语言编译系统 真 1 假 0 例 假如a 1 b 5 c a 则 c a b a b c a b c 上述表达式的值是 1 1 1 4 2逻辑运算符和逻辑表达式 4 2 1逻辑运算符及其优先顺序C语言提供三种逻辑运算符 1 逻辑与 2 逻辑或 3 逻辑非逻辑运算的真值表 4 2逻辑运算符和逻辑表达式 4 2 1逻辑运算符及其优先顺序例 逻辑运算举例a b若a b为真 则a b为真 a b若a b之一为真 则a b为真 a若a为真 则 a为假 反之若a为假 则 a为真 4 2逻辑运算符和逻辑表达式 4 2 1逻辑运算符及其优先顺序3 在一个逻辑表达式中如果包含多个逻辑运算符 则按照以下的优先顺序 1 非 与 或 高低 2 非 高算术运算符关系运算符 赋值运算符低 4 2逻辑运算符和逻辑表达式 4 2 1逻辑运算符及其优先顺序例 a b x y等价于 a b x y a b x y等价于 a b x y a a b等价于 a a b 4 2逻辑运算符和逻辑表达式 4 2 2逻辑表达式1 逻辑量 当一个量 可以是基本类型的常量或变量 用作判断的时候 C编译系统认为 非0真 0假2 逻辑表达式 用逻辑运算符 逻辑与 逻辑或 逻辑非 将关系表达式或逻辑量连接起来的有意义的表达式叫逻辑表达式 4 2逻辑运算符和逻辑表达式 4 2 2逻辑表达式3 逻辑表达式的值 真 1 假 0 4 C语言编译系统在给出逻辑运算结果时 以1代表 真 以0代表 假 但在判断一个量是否为 真 时 以0代表 假 以非0代表 真 即认为一个非0的数值是 真 4 2逻辑运算符和逻辑表达式 4 2 2逻辑表达式例 若a 4 则 a值为0 假 若a 4 b 5 则a b值为1 真 a b值为1 真 a b值为1 真 4 0 2值为1 真 c d 真 值为1 4 2逻辑运算符和逻辑表达式 4 2 2逻辑表达式例 计算 5 3 2 8 4 0 注意运算符优先级 数值所起作用 是逻辑值 原值 4 2逻辑运算符和逻辑表达式 4 2 2逻辑表达式在逻辑表达式的求解中 并不是所有的逻辑运算符都被执行 只是在必须执行下一个逻辑运算符才能求出表达式的解时 才执行该运算符 4 2逻辑运算符和逻辑表达式 4 2 2逻辑表达式例如 a b c 只有a为真 才需要判别b的值 只有a b都为真 才需要判别c的值 只要a为假 此时整个表达式已经确定为假 就不必判别b c 如果a为真 b为假 不判断c a b c 只要a为真 整个表达式已经确定为真 就不必判断b和c 只有a为假 才判断b a b都为假才判断c 4 2逻辑运算符和逻辑表达式 4 2 2逻辑表达式例 有以下程序 main inta 1 b 2 m 0 n 0 k k n b a m a b printf d d n k m 程序运行后的输出结果是 A 0 0B 0 1C 1 0D 1 1 4 2逻辑运算符和逻辑表达式 4 2 2逻辑表达式掌握C语言的关系运算符和逻辑运算符后 可以用一个逻辑表达式来表示一个复杂的条件 例如 判断某一年是否闰年 闰年 能被4整除 但不能被100整除 或能被400整除 year 4 0 year 100 0 year 400 0表达式为 真 闰年条件成立 是闰年 否则非闰年 4 2逻辑运算符和逻辑表达式 4 2 2逻辑表达式作业 写出C语言的表达式1 x 22 x 1 a并y b3 的定义域fabs x 2或x 2 x 2 x 0 x 0 4 3if语句 4 3 1if语句三种形式1 条件执行if 表达式 语句if p A 4 3if语句 4 3 1if语句三种形式1 if p A例 if x y printf d x 例 if x y t a a b b t 4 3if语句 4 3 1if语句三种形式复合语句 用一对花括号 包围起来的一条和多条语句 复合语句的形式 语句1 语句2 语句3 4 3if语句 4 3 1if语句三种形式 复合语句在选择结构 循环结构中经常用到 我们在逻辑上把复合语句看成是一条语句 4 3if语句 4 3 1if语句三种形式 例 要求用户输入一个实数 然后求出这个实数的绝对值 4 3if语句 4 3 1if语句三种形式2 分支执行if 表达式 语句1else语句2即if p AelseB当P为真时 非0 执行A 否则执行B或后续语句 4 3if语句 4 3 1if语句三种形式2 分支执行例 if a 0 printf Aisapositive n elseprintf Aisnotapositive n A和B可以使单一语句 也可以是复合语句 else部分不能独立存在 前面一定有 和if语句 4 3if语句 4 3 1if语句三种形式注意 在if和else后面可以是单条语句 也可以是复合语句 如果使用了复合语句 一定要用花括号括起来 语句块后面不要 号 4 3if语句 4 3 1if语句三种形式 例如 if a b c elseprintf itisnotatriangle 4 3if语句 4 3 1if语句三种形式在C语言中 表达式P的值是非0时 系统均按真值处理 例 1 if a printf ok 2 x 5 if x printf ok 3 y 0 if y 0 printf ok if y printf ok 4 3if语句 4 3 1if语句三种形式else子句不能单独使用 必须是if语句的一部分 与if配对使用 缩排的格式 例 if n 6 if n 12 printf n大于6且小雨12 n elseprintf n小于等于6 n 4 3if语句 例 以下程序运行后的输出结果是 main inta 1 b 3 c 5 if c a b printf yes n elseprintf no n yes 4 3if语句 4 3 1if语句三种形式例 比较a和b的大小 并将大值赋给max 并打印出max的值 编程步骤 1 确定算法 画出流程图 2 写出程序 3 上机编译 4 测试 4 3if语句 4 3 1if语句三种形式 include 注意程序的缩排 voidmain floata b max printf pleaseinputa b scanf f f 4 3if语句 4 3 1if语句三种形式例 从键盘上输入a b c三个数 按从大到小输出 难点 交换数据算法 4 3if语句 4 3 1if语句三种形式 includevoidmain inta b c t printf Entera b c scanf d d d 4 3if语句 4 3 1if语句三种形式3 elseif形式 阶梯式的elseif语句 4 3if语句 4 3 1if语句三种形式3 elseif形式 阶梯式的elseif语句 系统自上而下逐步判断条件P 一旦发现某个条件Pi满足时 则执行与它相关的语句Si 并跳过其它剩余的阶梯 若所有的条件均不满足 执行最后一个else语句或后续语句 4 3if语句 4 3 1if语句三种形式例 评价学生的成绩score 90优秀score 80良好score 70中等score 60及格score 60不及格 4 3if语句 4 3 1if语句三种形式 includevoidmain floatscore printf inputscore scanf f 4 3if语句 4 3 1if语句三种形式例 模拟超市的优惠购物 根据顾客购物数以及所购商品单价计算顾客应付金额 计算中要进行优惠打折 具体打折规定是 购物超过10件按8折优惠 购物超过100件 按7折优惠 4 3if语句 4 3 1if语句三种形式 include stdio h definerate11 0 definerate20 8 definerate30 7voidmain intnum floatprice money printf pleaseinputmumandprince scanf d f 4 3if语句 4 3 2if语句的嵌套 if if 语句1 else语句2 else if 语句3 else语句4 注意 应当注意if与else的配对关系 else总是与它上面的最近的未配对的if配对 特别是if else子句数目不一样时 if子句数量只会大于或等于else子句数量 4 3if语句 4 3 2if语句的嵌套 例 编一个程序 输入x 输出y 4 3if语句 4 3 2if语句的嵌套比较例 1 if x if y printf 1 elseprintf 2 2 if x if y printf 1 elseprintf 2 说明 通过加 可以改变else的层位 从而改变程序的执行流程 4 3if语句 4 3 2if语句的嵌套例 下面程序的运行结果是 includeviodmain inta 2 b 3 c 1 if a b if a c printf d n a elseprintf d n b printf over n over 4 3if语句 4 3 2if语句的嵌套例 判定某年是否闰年 闰年 能被4整除 但不能被100整除 或能被400整除 注意 leap是标志性变量 在C语言中经常用到 4 3if语句 4 3 2if语句的嵌套 includeviodmain intyear leap printf Whichyear scanf d year if year 400 0 leap 1 elseif year 4 0 if year 100 0 leap 0 elseleap 1 elseleap 0 if leap 1 printf disaleapyear year elseprintf disnotaleapyear 4 3if语句 4 3 2if语句的嵌套或者程序写成 includeviodmain intyear leap printf Whichyear scanf d year if year 4 0 4 3if语句 4 3 2if语句的嵌套例 判断某人是否属于肥胖体型 根据身高与体重因素 医务工作者经广泛的调查分析给出了以下 体指数 对肥胖程度的划分 体指数t 体重w 身高h w单位为千克 h单位为米 当t 27时 为肥胖 编程从键盘输入你的身高和体重 根据给定公式计算体指数 然后判断你的体重属于何种类型 4 3if语句 4 3 2if语句的嵌套 includevoidmain floath w t printf Pleaseenterh w scanf f f 4 3if语句 4 3 3条件运算符 条件表达式的一般形式 表达式1 表达式2 表达式3例如 条件运算符来处理a b a b 说明 1 条件运算符的执行顺序 先求解表达式1 若为非0 真 则求解表达式2 表达式2的值就是整个条件表达式的值 若表达式1的值为0 假 则求解表达式3 此时表达式3的值就是整个条件表达式的值 4 3if语句 4 3 3条件运算符 说明 2 条件运算符的优先级高于赋值运算符 低于关系运算符和算术运算符 例如 max a b a b等价于 max a b a b 3 条件运算符的结合性 自右向左 例如 a b a c d c d 先考虑优先级 再考虑结合性 上面表达式等价与 a b a c d c d 4 3if语句 4 3 3条件运算符 说明 4 表达式2和表达式3不仅可以是数值表达式 还可以是赋值表达式 函数表达式 例如 a b a 100 b 100 a b prinf d a prinf d b 5 表达式1 表达式2 表达式3的类型都可以不同 条件表达式值的类型是表达式2 表达式3中类型较高的类型 例如 x y 1 1 5整个表达式类型为实型 4 3if语句 4 3 3条件运算符 例从键盘输入你和你朋友的年龄 编程判断谁的年龄最大 并打印最大者的年龄 4 3if语句 4 3 3条件运算符 includevoidmain intyourage hisage max printf Pleaseenteryourage scanf d 4 3if语句 4 3 3条件运算符 例 输入一个字符 如果是大写字母 转换为小写 如果不是不转换 最后输出 includevoidmain charch scanf c 4 3if语句 4 3 3条件运算符 例 输入一个字符 如果是大写字母 转换为小写 如果不是不转换 最后输出 考虑 编程通过键盘输入一个字符 判断该字符是数字字符 digitcharacter 字母 englishcharacter 空格 spacecharacter 还是其他字符 othercharacter 4 4switch语句 多分支可以使用嵌套的if语句处理 但如果分支较多 嵌套的if语句层数多 程序冗长 降低可读性 C语言中switch语句亦称多分支选择语句 它比用嵌套的if语句实现多路分支问题 其程序结构清晰 易读 4 4switch语句 1 switch语句一般形式 switch 表达式e case常量表达式C1 语句1case常量表达式C2 语句2 case常量表达式Cn 语句n default 语句n 1 4 4switch语句 说明 1 switch括号后面的表达式e 允许为任何类型 例如整型 字符型 枚举型 2 常量表达式Ci必须与表达式e类型一致 整型和字符型可以通用 4 4switch语句 2 执行过程 1 计算 表达式e 的值 2 当 表达式e 的值与某case后的 常量表达式Ci 的值一致时 就执行此case后面的语句i 直到遇到break语句和switch语句的 3 如果 表达式e 的值与所有常量表达式均不一致 就执行default后面的语句 如果没有default就执行跳出switch 执行switch语句后面的语句 4 4switch语句 注意 1 常量表达式Ci仅起语句标号的作用 不做求值判断 2 常量表达式Ci的值必须是唯一的 没有先后次序 3 多个case可以共用一组执行语句 注意break使用的位置 4 case后面如果有多条语句 不必用 括起来 4 4switch语句 只有switch语句和break语句配合起来 才能形成真正意义上的多分支 4 4switch语句 例 设有声明语句inta 1 b 0 则执行以下语句后输出为 switch a case1 switch b case0 printf 0 break case1 printf 1 break case2 printf 2 break 0 2 4 4switch语句 问题 本题中没有break语句 执行结果会怎么样 如何解决这个问题 includevoidmain floatscore printf pleaseinputthescore scanf f 4 5应用程序举例 例 物流公司对用户计算运费 收费标准随距离变化如下 s 250km不折扣 250km s 500km 2 500km s 1000km 5 1000km s 2000km 8 2000km s 3000km 103000km s 15 计费按照运输距离s货物重量w进行 设每公里每吨货物基本运费为p 考虑折扣d时 总运费计算公式为f p w s 1 d 4 5应用程序举例 例 物流公司对用户计算运费 收费标准随距离变化如下 分析 int s 250 0 d 0 1 d 0 02 2 3 d 0 05 4 11 d 0 10 其它d 1 5 4 5应用程序举例 includevoidmain floatf w p s d printf inputunitprice space weight scanf f f f p s w switch int s 250 case0 d 0 break case1 d 0 02 break case2 case3 d 0 05 break case4 case5 case6 case7 d 0 08 break case8 case9 case10 case11 d 0 1 break default d 0 15 4 5应用程序举例 例 读入一个年份和月份 打印出该月有多少天 考虑闰年 用switch语句编程
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 卫生招聘知识试题及答案
- 通信原理高校试题及答案
- 透析相关试题及答案
- 2025年水利基础设施劳务分包协议
- 2025年技术监管合作协议
- 人力资源管理中的风险防控机制
- 如何应对股东纠纷与治理问题
- 2025年交易市场协议规范
- 企业法律权益保护风险管理评估
- 2025年城乡基础设施改善策划合作协议
- DLT电力建设施工及验收技术规范锅炉机组篇
- 高苯丙氨酸(苯丙酮尿症)血症课件
- pet拉伸薄膜工艺
- 离心泵的结构与工作原理通用课件
- 畜牧业的生物安全与疫情防控
- 关于皮肤科药物知识讲座
- 【小学心理健康教育分析国内外文献综述4100字】
- 2025年日历日程表含农历可打印
- 锐意进取开拓新市场
- 焊接施工流程图
- 2023年贵州省六盘水市钟山区数学六下期末达标检测试题含解析
评论
0/150
提交评论