




已阅读5页,还剩40页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
在C程序的三种结构中 分支结构是一重要结构 其中的P为条件 第五章逻辑运算和判断选取控制 问题 条件如何表达 逻辑运算 关系运算 5 1关系运算符 关系运算 比较运算 如 a 3为一比较运算 当a 5 a 3成立 结果称为 真 否则 如 a 1 a 3不成立 为假 上述表达式a 3称为关系表达式 5 1 1关系运算符及其优先次序 1 为同一优先级 等为同一优先级 但前者高于后者 2 关系运算符优先级低于算术运算符 C语言提供了六种关系运算符 优先级为 3 关系运算符优先级高于赋值运算符 如下图 举例 c a b c a b a b c a b c a b c a b c a b c a b c 5 1 2关系表达式 关系表达式的结果值规定为1或0 如 a b a b b c a 3 b 5 a b a b b c 完整的定义 用关系运算符将两个表达式 算术 关系 逻辑 赋值 字符等表达式 连接起来的式子 1 结果为真 成立 0 结果为假 不成立 如 当a 3 b 2 c 1时 a b c成立1 b c a不成立0 d a b则a b值为1 所以d 1 f a b ca b为1 a b c为0 所以f 0 关系运算为左结合 5 2逻辑运算符和逻辑表达式 用逻辑运算符将关系表达式 逻辑量连接起来的式子 逻辑表达式 5 2 1逻辑运算符及优先级 三种 与 或 非 其意义见真值表 a b当a b均为1时 才为1 a b当a b中有一个为1时 即为1 a当a为1 a为0 反之为1 由此看到 和 为双目运算符 为单目运算符 优先级定义 2 和 低于关系运算符 高于算术运算符 1 非 优先于 与 优先于 或 即 例 a b x y c a b x y c a b x y c 5 2 2逻辑表达式 1 逻辑表达式的值与关系表达式值一样 真为1 假为0 例 a 4则 a值为0 此处只要a 0 为真 则 a值为0 a 4 b 5a b为1 前面已定义了逻辑表达式 以下看一看逻辑表达式的值及具体的运算 4 0 2为1 总之 在逻辑运算中 非0值参加逻辑运算时被看成1处理 a 4 b 5a b为1 a 4 b 5 a b为1 2 一个逻辑表达式中的逻辑运算符并不是一定全部执行 一个实际的例子 判断年号是否为闰年 如 a b c 则当a 0 假 时 b c不需判断 当a 1 b 0 则不需判c 又如 a b c 当a 1时 b c均不必判别 闰年的定义 能被4整除且又能被400整除 年号能被4整除但不能被100整除 当 year 4 0 year 100 0 year 400 0 为1时 year为非闰年 设用变量year表示年号 当 year 4 0 year 100 0 year 400 0 为1时 year为闰年 否则为非闰年 如果要判别非闰年可在上述表达式前加非 运算符 当 year 4 0 year 100 0 year 400 0 为1时 year为非闰年 或者 即 则 5 3if语句 条件判断 5 3 1if的三种形式 功能 当表达式值非0时 执行语句A 否则不执行语句A 例如 if x y printf d x 形式1if 表达式 语句A 其流程图 形式2if 表达式 语句Aelse语句B 功能 表达式为非0 执行语句A表达式为0 执行语句B 例 if x y printf d x elseprintf d y 形式3if 表达式1 语句1 elseif 表达式2 语句2 elseif 表达式3 语句3 elseif 表达式n 语句n else语句n 1 流程 表达1 表达2 表达3 表达n 语句1 语句2 语句3 语句n 语句n 1 0 0 0 0 0 0 0 0 如 if 3 printf o k if a 1 表达式可以是逻辑 关系 甚至是算术表达式 2 上述形式中的语句必须以分号结束 3 上述形式中的语句可以是由 括起来的复合语句 此时 在 外可以不用分号 注意的问题 main floata b t scanf f f 例5 1输入两个实数 按代数值由小到大次序输出这两个数 3 6 3 2 3 20 3 60 运行情况如下 例5 2输入三个数 按大小顺序输出 main floata b c t scanf f f f 运行情况如下 3 7 1 1 00 3 00 7 00 5 3 2 if语句的嵌套 if 表达式1 内嵌if else 内嵌if 注意 else与最近的if配对 一般形式 在上述形式的if语句中 又可以是if语句 称为嵌套 if 表达式2 语句1 if 表达式3 语句3 else语句2 else语句4 例 if if 语句2else语句3 if if 语句1 else 所以 必要时加 if 语句1else 例5 3有一函数 y 1 x0 编一程序 输入一个x值 输出y值 有以下几种写法 请判断哪些是正确的 程序1 main intx y scanf d 程序2 将上面程序的if语句改为 if x 0 if x 0 y 1 elsey 0 elsey 1 程序3 将上述if语句改为 y 1 if x 0 if x 0 y 1 elsey 0 程序4 y 0 if x 0 if x 0 y 1 elsey 1 5 3 3条件运算符 C语言提供了一个简单的条件赋值语句或条件表达式 问题 当判断条件不论是 真 是 假 均给同一变量赋值时 能否简化语句书写 条件运算符为 三目运算符 功能 先判表达式1 若非0 则值为表达式2的值 否则为表达式3的值 一般形式 表达式1 表达式2 表达式3 max a b a b 当a b max a 否则max b 注 1 条件运算符优先于赋值运算符 例 max a b a b 可去掉 2 条件运算符低于关系运算符和算术运算符 例 max a b a b 1 max a b a b 1 不是 max a b a b 1 3 条件运算符结合性为从右至左 如 a b a c d c d相当于a b a c d c d 4 条件表达式不能取代一般的if语句 只有当if的两个分支为给同一变量赋值时才可替代if if a b printf d a elseprintf d b 由于printf 不是表达式 故不可用条件表达式 但可为 printf d a b a b 5 表达式1 表达式2 表达式3可类型不同 main charch scanf c 例5 4输入一个字符 判别它是否大写字母 如果是 将它转换成小写字母 如果不是 不转换 然后输出最后得到的字符 运行结果如下 A a 5 4switch语句 开关语句 问题 当某一表达式有n个取值 每一取值执行一语句 则如果用内嵌if十分繁锁 而用switch简单 一般形式 switch 表达式 case常量表达式1 语句1case常量表达式2 语句2 case常量表达式n 语句ndefault 语句n 1 例 根据成绩等级打印百分数段 switch grade case A printf 85 100 n case B printf 70 84 n case C printf 60 69 n case D printf 60 n default printf error n 根据表达式的取值 判断其与哪一个常量表达式相等 如 表达式i 则自语句i开始执行 直到语句n 1止 若与所有常量表达式值不相等 则从default后的语句开始执行 功能 以上存在一个问题 没有完全起到分支作用 解决办法 增加break语句 使之跳出switch结构 switch 表达式 case常表1 语句1 break case常表2 语句2 break case常表n 语句n break default 语句n 1 请大家修改以上例子 使之正确 一般形式改为 注 1 常表值必须互不相等 否则二异性 2 case顺序无关紧要 3 不一定非用break不可 有时几种情况合并执行一组语句 switch grade case A case B case C printf 60 n break case D printf 60 n break 5 5程序举例 例1写一程序 输入年号 判断是否为闰年 1 算法 根据闰年的判断条件 当年号能被4整除但不能被100整除时 它为闰年 当年号能被100整除又能被400整除时 它为闰年 设用变量year表示年号 leap为待置值变量 当year为闰年 leap 1 否则leap 0 2 流程图 3 程序 main intyear leap scanf d if leap printf dis year elseprintf disnot year printf aleapyear n 运行情况如下 2000 2000isaleapyear 1989 1989isnotaleapyear 上述条件也可用一个逻辑表达式表示 if year 4 0 例2 求ax2 bx c 0方程的解 i
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025隧道养护管理合同
- 福建教师考试题型及答案
- 饭店主管考试题及答案
- 东京驾照考试题及答案
- 2025年九年级上学期期末化学试卷及答案(共三套)
- 电子竞技考试题及答案
- 电梯修理员考试题及答案
- 电路板考试题及答案
- 电工材料考试题及答案
- 中国马拉硫磷项目商业计划书
- 《TCSUS69-2024智慧水务技术标准》
- 2025年医师定期考核临床专业知识考试试题+答案
- 国有企业十五五人力资源规划框架
- 2023年05月西藏林芝市司法局招考聘用专职人民调解员笔试题库含答案解析
- 政策性农业保险政-(最终版)课件
- 银行校园招聘考试国民金融知识
- 最新教师坐班制度
- 安全文明施工措施费使用计划表完整优秀版
- 项目施工重大安全隐患排查表
- 水质检测公司检测报告(模板)
- 6.消毒隔离篇-骨髓移植病房管理
评论
0/150
提交评论