




已阅读5页,还剩41页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第五章 选择结构程序设计 本章要点 关系表达式逻辑表达式选择结构程序设计 主要内容 5 1关系运算符和关系表达式5 2逻辑运算符和逻辑表达式5 3if语句5 4switch语句5 5程序举例 5 1关系运算符和关系表达式 1 关系运算符及其优先次序 大于 大于或等于 等于 不等于 说明 关系运算符的优先级低于算术运算符关系运算符的优先级高于赋值运算符 5 1关系运算符和关系表达式 关系表达式的值是一个逻辑值 即 真 或 假 2 关系表达式用关系运算符将两个表达式 可以是算术表达式 赋值表达式 字符表达式 关系表达式 逻辑表达式 接起来的式子 称关系表达式例 a b a b b c a 3 b 5 a b b c 例 关系表达式 a b 的值为 真 表达式的值为1 C语言中没有专用的逻辑值 1代表真 0代表假 5 2逻辑运算符和逻辑表达式 1 逻辑运算符及其优先次序 1 逻辑与 相当于其他语言中的AND 2 逻辑或 相当于其他语言中的OR 3 逻辑非 相当于其他语言中的NOT例 a b若a b均为真 则a b为真 a b若a b之一为真 则a b为真 a若a为真 则 a为假 优先次序 非 逻辑运算符中的 和 低于关系运算符 高于算术运算符 5 2逻辑运算符和逻辑表达式 2 逻辑表达式用逻辑运算符将关系表达式或逻辑量连接起来的式子就是逻辑表达式 逻辑表达式的值应该是一个逻辑值 真 或 假 例 设a 4 b 5 a的值为0a b的值为1a b的值为1 a b的值为14 0 2的值为1 任何非零的数值被认作 真 由系统给出的逻辑运算结果 逻辑值 不是0就是1 不可能是其他数值 而在逻辑表达式中作为参加逻辑运算的操作数 逻辑量 可以是0 假 或任何非0的数值 真 5 2逻辑运算符和逻辑表达式 例 5 3 8 4 0自左向右运算 1 0逻辑值为0 8 3逻辑值为0 4 1值为3 0逻辑值为1 5 3逻辑值为1 表达式值为0 关系表达式的值是一个逻辑值 即 真 或 假 5 2逻辑运算符和逻辑表达式 在逻辑表达式的求解中 并不是所有的逻辑运算符都要被执行 1 a b c只有a为真时 才需要判断b的值 只有a和b都为真时 才需要判断c的值 2 a b c只要a为真 就不必判断b和c的值 只有a为假 才判断b a和b都为假才判断c 注意例 m a b n c d 当a 1 b 2 c 3 d 4 m和n的原值为1时 由于 a b 的值为0 因此m 0 而 n c d 不被执行 因此n的值不是0而仍保持原值1 5 3if语句 1 If语句的三种基本形式 1 if 表达式 语句例 if x y printf d x 5 3if语句 2 if 表达式 语句1else语句2例 if x y printf d x elseprintf d y 5 3if语句 3 if 表达式1 语句1elseif 表达式2 语句2elseif 表达式3 语句3 elseif 表达式m 语句melse语句n 5 3if语句 例 if number 500 cost 0 15 elseif number 300 cost 0 10 elseif number 100 cost 0 075 elseif number 50 cost 0 05 elsecost 0 5 3if语句 说明 1 3种形式的if语句中在if后面都有表达式 一般为逻辑表达式或关系表达式 2 第二 第三种形式的if语句中 在每个else前面有一个分号 整个语句结束处有一个分号 3 在if和else后面可以只含有一个内嵌的操作语句 也可以有多个操作语句 此时用花括号将几个语句括起来成为一个复合语句 5 3if语句 注 if后若出现多个语句 要用 括起来 否则编译时提示错误 提示else与if不匹配 例 includevoidmain inta 0 b 0 c 0 d 0 if a 0 b 1 c 2 elsed 3 printf d d d d n a b c d 编译时提示错误 应改写为 b 1 c 2 或b 1 c 2 正确 结果 0 1 2 0 5 3if语句 例5 1输入两个实数 按代数值由小到大的顺序输出这两个数 includevoidmain floata b t scanf f f 5 3if语句 例5 2输入三个数a b c 要求按由小到大的顺序输出 ifa b将a和b对换ifa c将a和c对换ifb c将b和c对换 5 3if语句 includevoidmain floata b c t scanf f f f 5 3if语句 2 If语句的嵌套在if语句中又包含一个或多个if语句称为if语句的嵌套 形式 If if 语句1else语句2Elseif 语句3else语句4 内嵌if 5 3if语句 匹配规则 Else总是与它上面的 最近的 未配对的if语句配对 例1 if if 语句1elseif 语句2else语句3 例2 if if 语句1 elseif 语句2else语句3 当if和else数目不同时 可以加花括号来确定配对关系 限定了内嵌if语句的范围 因此else与第一个if配对 5 3if语句 5 3if语句 includevoidmain intx y scanf d 5 3if语句 上例中的程序段有四个 请判断哪个是正确的 程序1 程序2 if x 0 y 1 if x 0 y 1 elseelsey 0 if x 0 y 0 elsey 1 elsey 1 程序3 程序4 y 1 y 0 if x 0 if x 0 if x 0 y 1 if x 0 y 1 elsey 0 elsey 1 5 3if语句 程序1 if x 0 y 1 elseif x 0 y 0 elsey 1 正确 5 3if语句 程序2 if x 0 if x 0 y 1 elsey 0 elsey 1 正确 5 3if语句 程序3 y 1 if x 0 if x 0 y 1 elsey 0 错误 5 3if语句 程序3修正 y 1 if x 0 if x 0 y 1 elsey 0 正确 5 3if语句 程序4 y 0 if x 0 if x 0 y 1 elsey 1 错误 5 3if语句 程序4修正 y 0 if x 0 if x 0 y 1 elsey 1 正确 5 3if语句 格式 表达式 表达式 表达式 功能 判断表达式1的值 如果成立就执行表达式2 否则就执行表达式3使用场合 若在 语句中 当被判别的表达式的值为 真 或 假 时 都执行一个赋值语句且向同一个变量赋值时 可以用一个条件运算符来处理 3 条件运算符 5 3if语句 例 当a b时将a的值赋给max 当a b时将b的值赋给max 可以看到无论a b是否满足 都是向同一个变量赋值 可以用下面的条件运算符来处理 5 3if语句 说明 1 条件运算符的执行顺序 先求解表达式 若为非 真 则求解表达式 此时表达式 的值就作为整个条件表达式的值 若表达式 的值为 假 则求解表达式 表达式 的值就是整个条件表达式的值 2 条件运算符优先级高于赋值运算符 低于关系运算符和算术运算符 如 a b a b 1 3 条件运算符的结合方向为 自右至左 等同于a b a c d c d 等同于a b a b 1 如 a b a c d c d 5 3if语句 4 表达式2 和 表达式3 不仅可以是数值表达式 还可以是赋值表达式或函数表达式 如果a b 则条件表达式的值为2 5 若a b 值应为1 但由于2 5是实型 比整型类型高 因此1要转换成实型值1 0 如 a b a 3 b 4 a b printf d a printf d b 5 条件表达式中 表达式 的类型可以与表达式 和表达式 的类型不同 表达式2和表达式3的类型也可以不同 此时条件表达式的值的类型为二者中较高的类型 如 a b 2 5 1 5 3if语句 例5 4输入一个字符 判别它是否大写字母 如果是 将它转换成小写字母 如果不是 不转换 然后输出最后得到的字符 includevoidmain charch scanf c 如果字符变量ch的值为大写字母 则条件表达式的值为 即相应的小写字母 如果ch的值不是大写字母 则不进行转换 即条件表达式的值为 5 4switch语句 switch语句 多分支选择语句 的格式 switch 表达式 case常量表达式 语句 case常量表达式 语句 case常量表达式 语句 default 语句 5 4switch语句 例 要求按照考试成绩的等级输出百分制分数段 用switch语句实现 switch grade case printf case printf case printf case printf default printf 5 4switch语句 说明 1 switch后面括弧内的 表达式 标准允许它为任何类型 2 当表达式的值与某一个case后面的常量表达式的值相等时 就执行此case后面的语句 若所有的case中的常量表达式的值都没有与表达式的值匹配的 就执行default后面的语句 3 每一个case的常量表达式的值必须互不相同 否则就会出现互相矛盾的现象 对表达式的同一个值 有两种或多种执行方案 4 执行完一个case后面的语句后 流程控制转移到下一个case继续执行 case常量表达式 只是起语句标号作用 并不是在条件判断 在执行switch语句时 根据switch后面表达式的值 找到匹配的入口标号 就从此标号开始执行下去 不再进行判断 5 4switch语句 例 前例中 若grade的值等于 C 则将输出 60 69 60error case case case printf 60 n break 6 多个case可以共用一组执行语句 应该在执行一个case分支后 用一个break语句来终止switch语句的执行 5 各个case和default的出现次序不影响执行结果 例如 可以先出现 default 再出现 case 然后是 case switch grade case printf break case printf break case printf break case printf break default printf break 5 5程序举例 例5 6求 x2 方程的解 基本的算法 不是二次方程 b2 有两个相等实根 b2 有两个不等实根 b2 有两个共轭复根 5 5程序举例 include includevoidmain floata b c disc x1 x2 realpart imagpart scanf f f f 5 5程序举例 elseif disc 1e 6 x1 b sqrt disc 2 a x2 b sqrt disc 2 a printf hasdistinctrealroots 8 4fand 8 4f n x1 x2 else realpart b 2 a imagpart sqrt disc 2 a printf hascomplexroots n printf 8 4f 8 4fi n realpart imagpart printf 8 4f 8 4fi n realpart imagpart 5 5程序举例 例5 7运输公司对用户计算运费 路程 越远 每公里运费越低 标准如下 没有折扣 折扣 折扣 折扣 折扣 折扣设每公里每吨货物的基本运费为 货物重为 距离为 折扣为 则总运费 的计算公式为 100 0 5 5程序举例 分析折扣变化的规律性 折扣的 变化点 都是250的倍数引入新变量c
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- mac地址协议书是
- ftp协议书端口号
- 被翼支付协议书
- 《第2课 信息新技术-计算机的硬件与软件》说课稿教学反思-2023-2024学年初中信息技术清华大学版2012七年级下册
- 租房协议书范本
- 第4课《孙权劝学》教学设计 2023-2024学年统编版语文七年级下册
- 传输协议书tcp和udp
- 法律协议书包
- 公司租房协议书
- sip协议书端口号
- 生而逢盛世青年当有为 (模板)
- 养殖险的理赔培训课件
- DB51T 3149-2023 四川省电力用户受电设施及配电设施运维检修服务管理规范
- 临床前药代动力学指导原则
- 生物大分子的分离纯化和鉴定
- 轮胎拆装机的安全操作规程
- 社保退休的调档函格式
- prs7910数据网关机技术使用说明书
- GB/T 3810.4-2016陶瓷砖试验方法第4部分:断裂模数和破坏强度的测定
- 手术室进修护士结业理论考试题附答案
- 组织行为学MBA全套课件
评论
0/150
提交评论