




已阅读5页,还剩16页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第4章选择结构程序设计 目前我们已经讲了顺序结构程序设计 记住顺序结构是任何程序都存在的 因为一个程序总要从开始到结束 今天要讲的选择结构只是某些程序中的一个步骤 要设计选择结构程序 要考虑两个方面的问题 一 是在C语言中如何来表示选择的条件 二 是在C语言中实现选择结构用什么语句 在C语言中表示条件 一般用关系表达式或逻辑表达式 实现选择结构用if语句或switch语句 面对上述两个问题我们今天要讲的主要内容如下 4 1关系运算及其表达式 4 2逻辑运算及其表达式 4 3if语句 4 4switch语句 4 1关系运算及其表达式 所谓 关系运算 实际上就是 比较运算 即将两个数据进行比较 判定两个数据是否符合给定的关系 4 1 1关系运算符及其优先次序1 关系运算符C语言提供6种关系运算符 大于 大于或等于 等于 不等于 注意 在 语言中 等于 关系运算符是双等号 而不是单等号 赋值运算符 注 由于 语言没有逻辑型数据 所以用整数 表示 逻辑真 用整数 表示 逻辑假 关系表达式的值是逻辑值 2 优先级 1 在关系运算符中 前4个优先级相同 后2个也相同 且前4个高于后2个 2 与其它种类运算符的优先级关系 关系运算符的优先级 低于算术运算符 但高于赋值运算符 例如 下面的关系表达式都是合法的 a b a b c d a 3 b a b b c 4 1 2关系表达式1 关系表达式的概念所谓关系表达式是指 用关系运算符将两个表达式连接起来 进行关系运算的式子 再次强调 C语言用整数 1 表示 逻辑真 用整数 0 表示 逻辑假 所以 关系表达式的值 还可以参与其它种类的运算 例如算术运算 逻辑运算等 例如 假设num1 3 num2 4 num3 5 则 1 num1 num2的值 0 2 num1 num2 num3的值 1 3 num1 num2 num3的值 1 思考题 任意改变num1或num2的值 会影响整个表达式的值吗 4 num1 num2 num3的值 6 因为num1 num2的值 1 1 5 6 Return 4 2逻辑运算及其表达式关系表达式只能描述单一条件 例如 x 0 如果需要描述 x 0 同时 x 10 该这么办呢 逻辑非 相当于 否定 这就要借助于逻辑表达式了 4 2 1逻辑运算及其优先次序 逻辑运算符及其运算规则 1 C语言提供三种逻辑运算符 逻辑与 相当于 同时 逻辑或 相当于 或者 例如 假定x 5 则 x 0 x5 的值为 假 x的值为 假 2 运算规则 1 当且仅当两个运算量的值都为 真 时 运算结果为 真 否则为 假 2 当且仅当两个运算量的值都为 假 时 运算结果为 假 否则为 真 3 当运算量的值为 真 时 运算结果为 假 当运算量的值为 假 时 运算结果为 真 例如 下面的表达式都是逻辑表达式 x 0 x5 x 0 a b c b c 2 逻辑运算符的运算优先级 1 逻辑非的优先级最高 逻辑与次之 逻辑或最低 即 非 与 或 2 与其它种类运算符的优先关系 算术运算 关系运算 赋值运算 4 2 2逻辑表达式1 逻辑表达式的概念所谓逻辑表达式是指 用逻辑运算符将1个或多个表达式连接起来 进行逻辑运算的式子 上述表达式中也用到了关系运算符why不叫关系表达式呢 对于一个表达式它最后一步进行的是什么运算就叫什么表达式 2 逻辑量的真假判定 和非 语言用整数 表示 逻辑真 用 表示 逻辑假 但在判断一个数据的 真 或 假 时 却以 和非 为根据 如果为 则判定为 逻辑假 如果为非 则判定为 逻辑真 逻辑表达式的值也是一个逻辑值 非 真 即 假 例如 假设num 12 则 num的值 num 1 num31的值 1 3 说明 逻辑运算符两侧的操作数 除可以是 和非 的整数外 也可以是其它任何类型的数据 如实型 字符型等 如 a 3 5的值 1 2 在计算逻辑表达式时 只有在必须执行下一个表达式才能求解时 才求解该表达式 即并不是所有的表达式都被求解 换句话说 1 对于逻辑与运算 如果第一个操作数被判定为 假 系统不再判定或求解第二操作数 2 对于逻辑或运算 如果第一个操作数被判定为 真 系统不再判定或求解第二操作数 Return 例如 假设n1 n2 n3 n4 x y的值分别为1 2 3 4 1 1 则求解表达式 x n1 n2 y n3 n4 后 x的值变为 而y的值不变 仍等于1 4 3if语句 4 3 1if语句的一般格式 if 表达式 语句组1 else 语句组2 注意 1 if语句中的 表达式 必须用 和 括起来 2 else子句 可选 是if语句的一部分 必须与if配对使用 不能单独使用 3 当if和else下面的语句组 仅由一条语句构成时 也可不使用复合语句形式 即去掉花括号 4 3 2if语句的执行过程 1 缺省else子句时 即 if 表达式 语句 程序演示 该语句的功能是 首先计算表达式的值然后判断其值是否为非零 真 若为非零 真 则执行语句组 否则直接转向执行下一条 其执行过程如右图所示 表达式 真 语句 假 Forexample4 1 输入一个数 若x为大于10的数 则y x 10 并输出y的值 源程序清单如下 includemain intx y printf ninputaintegertox scanf d 2 指定else子句时 即 if 表达式 语句1 else语句2 该语句的功能是 当 表达式 的值不等于0 即判定为 逻辑真 时 则执行语句1 否则 执行语句2 其执行过程如右图所示 表达式 真 语句1 假 语句2 Forexample4 2 判断一个数是奇数还是偶数 并把结果显示出来 程序清单如下 include stdio h main intx printf npleaseinputaintegertox scanf d 程序演示 4 3 3 if语句的嵌套与嵌套匹配原则 1 在if语句中又完全包含了一个或多个if语句称为if语句的嵌套 2 if语句嵌套时 else子句与if的匹配原则 与在它上面 距它最近 且尚未匹配的if配对其一般形式 1 如下 if 表达式1 语句1 elseif 表达式2 语句2 elseif 表达式3 语句3 elseif 表达式n 语句n else语句n 1 该语句执行的过程如右图 表达式1 表达式2 表达式3 表达式n 语句1 语句3 语句n 语句n 1 语句2 真 真 真 真 假 假 假 假 Forexample4 3 某年高考分数规定 600分以上入取第一本 550分以上录取第二本 500分以上录取第三本 450分以上录取专科 否则不能录取 输入高考成绩 要求输出应入什么大学 include stdio h main intscore printf npleaseinputyourscore scanf d 程序演示 其一般形式 2 如下 if 表达式1 if 表达式2 if 表达式3 else语句3 else语句2 else语句1 该语句执行的过程如右图 表达式2 表达式3 表达式n 语句3 语句n 语句n 1 语句2 真 真 真 假 假 假 假 表达式1 语句1 真 4 说明 1 因在C语言中规定 else总是与它上面最近且又没有配对的if语句进行配对 如 If 表达式1 if 表达式2 语句1 else语句2 上面语句中的else是与第2个if配对的 如果要改变这种默认的配对关系 可以在相应if条件选择语句上加上左 右花括号来确定新的配对关系如 If 表达式1 if 表达式2 语句1 else语句2 上述语句中的花括号改变了if与else的默认配对关系 使得else与第一个if配对 4 4switch语句 1 switch语句的一般形式 switch 表达式 case常量表达式1 语句组1 break case常量表达式2 语句组2 break case常量表达式 语句组n break default 语句组n 1 break 前面介绍的if语句 常用于两情况的选择结构 要表示两种以上条件的选择结构 则要用if语句的嵌套形式 但如果嵌套的if语句比较多时 程序可读性就差 因此 C语言提供了switch语句来直接实现多种情况的选择结构 Switch 表达式 常量表达式1 常量表达式n 常量表达式2 常量表达式n 1 语句1 语句2 语句n 语句n 1 break break break break Switch语句的下一语句 2 执行过程如下图 Forexample4 4 某幼儿园只收2至6岁的小孩 2 3岁入小班 4岁入中班 5 6岁入大班 输入年龄 要求输出应入什么班 程序清单如下 include stdio h Main intage Printf ninputaage Scanf d 程序演示 3 说明 1 每个case后面 常量表达式 的值 必须各不相同 否则会出现相互矛盾的现象 即对表达式的同一值 有两种或两种以上的执行方案 2 case后面的常量表达式仅起语句标号作用 并不进行条件判断 系统一旦找到入口标号 就从此标号开始执行 不再进行标号判断 所以必须加上break语句 以便结束switch语句 程序演示 思考题 如果去掉 案例4 4程序中的所有break语句 且输入的年龄为2 输出会如何 3 各case及default子句的
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 临夏方案模型制作咨询
- 跨境电商零售进口市场跨境电商品牌塑造策略报告
- 夫妻离婚股权分割及股权结构优化合同
- 生物医药专利合作开发补充协议正规范本
- 离婚协议补充:关于双方居住权及房屋使用协议
- 离婚股权分配争议解决指南:司法实践中合同条款解读
- 青年创业公寓合租租赁合同与创业支持协议
- 离婚后同居期间子女监护及教育费用及财产分割协议
- 离婚协议中赡养费支付及生活补助合同范本
- 离婚后子女抚养、教育、生活费用分担详细协议
- GB/T 18690.2-2017农业灌溉设备微灌用过滤器第2部分:网式过滤器和叠片式过滤器
- 粤教花城版小学音乐歌曲《哈哩噜》课件
- 河北省特种设备检验收费标准
- 集成电路技术导论课件
- 交管12123学法减分试题库带答案
- 培育和践行社会主义核心价值观的课件
- 交通标志牌工程施工组织设计(标准版)
- 第二章药物转运及转运体
- 全区建设工程质量检测人员岗位考试考核实施细则
- 【课件】《红烛》课件24张统编版高中语文必修上册
- 交通事故认定书复核申请书模板
评论
0/150
提交评论