逻辑运算和判断选取结构.ppt

上传人:zhu****ei 文档编号:5411605 上传时间:2020-01-28 格式:PPT 页数:41 大小:282.50KB
返回 下载 相关 举报
逻辑运算和判断选取结构.ppt_第1页
第1页 / 共41页
逻辑运算和判断选取结构.ppt_第2页
第2页 / 共41页
逻辑运算和判断选取结构.ppt_第3页
第3页 / 共41页
点击查看更多>>
资源描述
第4章逻辑运算和判断选取结构 C程序设计 谢军 2 本章教学内容 要求 内容1 关系运算符和关系表达式 2 逻辑运算符和逻辑表达式 3 if语句4 switch语句5 程序举例要求1 掌握关系表达式与逻辑表达式书写与运用 2 掌握if语句与switch语句的使用 3 能够设计包含顺序结构与选择结构的C程序 3 重点与难点 重点1 掌握程序的选择结构 2 顺序结构与选择结构的C程序的设计 难点运算符的优先级 程序设计 4 关系运算符和关系表达式 关系运算实际是对两个操作数进行大小等同的比较运算 一 关系运算符 六种 及其优先次序 大于 大于或等于 高 等于 不等于 低前4种关系运算的优先级相同 后2种也相同 前4种高于后2种优先次序 单目 算术 关系 逻辑 赋值结合性 左结合 双目运算符 例 a a b等价于c a b a b c等价于a b c a b c等价于 a b ca b c等价于a b c 5 关系运算符和关系表达式 一 关系表达式什么是关系表达式 用关系运算符将两个表达式 可以是算术表达式或关系表达式 逻辑表达式 赋值表达式 字符表达式 连接起来的式子 为关系表达式 例 a b b c a 3值为 真 a b 值为 假 a 3 b 2 c 1 d a b f a b c 执行结果d 1 f 0 因a b c等价于 a b c所以 判别式 a b c 在C语言中不能简单地用a b c表示 需要借助逻辑运算来实现 即 a b b c a b即3 2为真1 a b为1 c为1 则1 1为假 6 逻辑运算符和逻辑表达式 一 逻辑运算符及优先级 逻辑非 含义NOT 高高 逻辑与 含义AND 算术运算符 逻辑或 含义OR 低关系运算符例 a b x y a b x y a a b赋值运算符低真值表 7 逻辑运算符和逻辑表达式 二 逻辑表达式用逻辑运算符将关系表达式或逻辑量连接起来就是逻辑表达式 逻辑表达式的值是一个逻辑量 即 真 和 假 例 inta 1 b 5 则 a的值为0 a b的值为1 a b的值为1 应注意 1 若在一个表达式中的不同位置上出现数值 应区分哪些是作为数值运算或关系运算 哪些是作为逻辑运算的对象2 逻辑运算符两侧的运算对象可为任意类型的数据 例 c d 值为 3 逻辑表达式求解时 并不是所有的逻辑运算符都被执行 只有在必须执行下一个逻辑运算符才能求出表达式解时 才执行该运符 例 1 a b c2 a b c4 和 的结合性是从左往右 而 是单目运算符 结合性是从右往左5 逻辑表达式一般用来表示并判定一种复杂条件 8 例题 例1 5 3 2 8 a key A key Z 9 if语句 一 if语句的两种形式1 if 表达式 语句 例4 1 输入三个数 找出并打印其最小数 分析 设三个数为A B C 由键盘读入 我们用一个变量MIN来标识最小数 A B C与MIN皆定义为int型变量 每次比较两个数 首先将A赋给MIN 然后比较MIN和B 将小的一个赋给MIN 再把第三个数C与MIN比较 再将小的一个赋给MIN 则最后MIN即为A B C中最小数 其流程图见下一页 10 if语句 流程图 N S结构化流程图 11 if语句 main 输入三个数 找出并打印其最小数 inta b c min printf inputa b c scanf d d d 执行情况如下 RUN inputa b c 352 Theresultis2 12 if语句 一 if语句的两种形式2 if 表达式 语句1else语句2 例4 2 输入两个整数 输出其中的大数 分析 判别a b的大小 若a大 则输出a 否则输出b 算法 1 输入a b2 若a b 则输出a否则输出b 13 if语句 源程序如下 main inta b printf inputtwonumbers scanf d d N S结构化流程图 14 if语句 二 复合语句if语句中 有时需要执行的语句不止一条 这就要用到复合语句 复合语句 就是用一对花括号括起来的一条或多条语句 形式如下 语句1 语句2 语句n 无论包括多少条语句 复合语句从逻辑上讲 被看成是一条语句 复合语句在分支结构 循环结构中 使用十分广泛 15 if语句 二 复合语句 例4 3 读入两个数x y 将大数存入x 小数存入y 分析 x y从键盘读入 若x y 只需顺序打出 否则 应将x y中的数进行交换 然后输出 两数交换必须使用一个中间变量t 定义三个浮点数x y t 算法 1 读入x y 2 大数存入x 小数存入y 3 输出x y 第2 步求精 若x y 则交换x与y 再求精 x与y交换 t x x y y t 16 if语句 N S结构化流程图 流程图 17 if语句 includemain floatx y t printf inputx y scanf f f 执行结果 inputx y 43 256 7 result 56 70043 200 18 if语句 二 复合语句 例4 4 货物征税问题 价格在 万元以上的征5 5000元以上1万元以下的征3 1000元以上5000以下的征2 1000元以下的免税 读入货物价格 计算并输出税金 分析 读入price 计算tax 这是一个较复杂的分支结构程序设计 应注意避免重复征税 假定货物的价格在1万元以上 征税应分段累计 各段采用不同税率进行征收 算法 若price 10000则tax 0 05 price 10000 price 10000 若price 5000则tax 0 03 price 5000 tax price 5000 若price 1000则tax 0 02 price 1000 tax price 1000 19 if语句 二 复合语句 includemain floatprice tax 0 printf inputprice scanf f 运行程序 RUN inputprice 15000 thetax 480 000 20 if语句 三 if elseif语句实际应用中常常面对更多的选择 这时 将if else扩展一下 就得到if elseif结构 其一般形式为 if语句 elseif语句2elseif语句3else语句4 21 if语句 三 if elseif语句 例4 5 判别键盘输入字符的类别 分析 可以根据输入字符的ASCII码来判别类型 由ASCII码表可知ASCII值小于32的为控制字符 在 0 和 9 之间的为数字 在 A 和 Z 之间为大写字母 在 a 和 z 之间为小写字母 其余则为其它字符 算法如下 1 输入字符C 2 若c 32 则c为控制字符否则 若c在 0 和 9 之间 则c为数字字符否则 若c在 A 和 Z 之间 则c为大写英文字母字符否则 若c在 a 和 z 之间 则c为小写英文字母字符否则c为其它字符 22 if语句 三 if elseif语句 includemain 判别键盘输入字符的类别 charc printf inputacharacter c getchar if c 0 23 if语句 四 if语句的嵌套在一个if语句中可以又出现另一个if语句 这称为if语句的嵌套或多重if语句 ifif else语句2 例4 6 计算函数1x 0y 0 x 0 1x 0流程图见右图 源程序见下一页 24 if语句 四 if语句的嵌套源程序如下 main floatx y printf inputx scanf f N S结构化流程图 25 if语句 四 if语句的嵌套注意 对多重if 最容易犯的错误是if与else配对错误 例如 写成如下形式 y 0 if x 0 if x 0 y 1 elsey 1 从缩排上可以看出 作者希望else是与ifx 0配对 但是C语言规定else总是与离它最近的上一个if配对 结果 上述算法的流程图变成右图 完全违背了设计者的初衷 26 if语句 四 if语句的嵌套改进的办法是使用复合语句 将上述程序段改写如下 y 0 if x 0 if x 0 y 1 elsey 1 27 if语句 五 在使用if语句中注意事项 1 注意关系运算符 与赋值运算符 的区别 例如 if a b 语句 若a与b相等 则执行后面的语句 if a b 语句 将b的值赋给a 若b非0 则执行后面的语句 2 关键字if后面的表达式可以是变量 例如 if b 语句 若b非0 则执行后面的语句 3 注意复合语句的使用 在if语句的三种形式中 所有的语句应为单个语句 如果要想在满足条件时执行一组 多个 语句 则必须把这一组语句用 括起来组成一个复合语句 例如 if x y t x x y y t 28 if语句 五 在使用if语句中注意事项 4 注意if和else的配对问题 else总是与它前面最近的if配对 main inta b printf pleaseinputA B scanf d d 29 if语句 六 条件运算符和条件表达式1 条件运算符 是C语言唯一的一个三目运算符 2 条件表达式 e1 e2 e3 其中 e1 条件或称逻辑表达式 当e1为真取e2的值 否则取e3的值作为表达式的值 30 3 说明 1 条件运算符的优先级高于赋值运算符和逗号 按序求值 运算符max a b a b 与max a b a b 等价y a b a b 1 与y a b a b 1 等价2 条件运算符的结合性 自右向左例如 a 1 b 2 c 3 d 4 则条件表达式a b a c d c d的值为4即等价于 a b a c d c d if语句 31 if语句 4 说明 3 条件表达式不能取代一般的if语句 只能取代if语句中特殊的一种 例 if a b printf d a elseprintf d b 可用printf d a b a b 取代 条件表达式中 表达式 的类型可与表达式 及 不同 表达式 和表达式 的类型也可不同 而条件表达式值的类型取表达式 和 中的较高者 例 intx y x a b 值为字符型而x y 1 1 5值为实型 32 switch语句 Switch语句是多分支选择语句 一般形式为 switch 表达式 case常量表达式1 语句1或空 case常量表达式2 语句2或空 case常量表达式n 语句n或空 default 语句n 1或空 33 switch语句 控制流程图 34 switch语句 说明 1 执行switch语句时 将表达式的值逐个与case后的常量进行比较 若与其中一个相等 则执行该常量下的语句 若不与任何一个常量相等 则执行default后面的语句 2 switch中表达式与case后的常量可为任何类型 3 每一个case后常量表达式的值必须互不相同 否则出现矛盾 4 每个case或default后的语句可以是复合语句 但不需要使用 和 括起来 执行完一个case后面语句后 流程控制转移到下一个case继续执行 因此 若想在不同情况下执行不同的语句 必须使用break语句 break语句的功能 将程序流程控制跳出整个switch语句 执行switch语句的下一条语句 35 switch语句 switch grade case A printf 85 100 n break case B printf 70 84 n break case C printf 60 69 n break case D printf 60 n break default printf Error n 6 多个case可共用一组执行语句 例 switch i case1 case2 case3 语句1 break case4 case5 语句2 break default 语句3 例4 8 输入年份和月份 打印该年 该月有几天 36 main 输入年份和月份 打印该年 该月有几天 intyear month day printf pleaseinputtheyearnumberandmonthnumber scanf d d switch语句 37 例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 有两个共轭复根 程序举例 38 例4 9 解一元二次方程ax2 bx c 0 a b c由键盘输入 include includemain floata b c delt x1 x2 doublet printf pleaseinputa b c scanf f f f if delt 0 0 程序举例 if delt 0 0 t sqrt delt x1 0 5 b t a x2 0 5 b t a printf Therearetwodifferentroots fand f n x1 x2 else delt 0 printf Therearetwoequalroots f n 0 5 b a else delt0 endofmain 39 运行结果如下 RUN pleaseinputa b c 123 Therearetwovirtualroots 1 000000 i1 000000 1 000000 i1 000000RUN pleaseinputa b c 253 Therearetwodifferentroots 1 500000and 1 000000RUN pleaseinputa b c 003 Noroot 程序举例 40 小结 1 关系运算符和关系表达式 2 逻辑运算符和逻辑表达式 3 if语句 4 switch语句 重点 掌握选择结构及其程序设计 41 作业 书面作业P111 5 1 5 2 5 3和5 5课外上机作业本章的所有例题
展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 图纸专区 > 课件教案


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!