




已阅读5页,还剩54页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第5章选择结构程序设计 河北化工医药职业技术学院 C语言程序设计 2020 2 3 2 2020 2 3 3 选择结构的引入 用C语言实现图示的分段函数 2020 2 3 4 用C语言描述 if x 0 y 1 elsey 1 说明 x 0是一个关系表达式 是一个关系运算符 x 0关系表达式成立 也就是说由关系表达式x 0构成的逻辑运算为真时 y 1 否则y 1 2020 2 3 5 本章主要内容 5 1if语句5 1 1if语句的一般形式5 1 2if语句的嵌套5 2switch语句5 2 1switch语句的一般形式5 2 2break语句5 3选择结构程序设计举例 2020 2 3 6 5 1关系运算符和关系表达式 关系运算是逻辑运算中比较简单的一种 关系运算 就是 比较运算 即 将两个值进行比较 判断是否符合或满足给定的条件 如果符合或满足给定的条件 则称关系运算的结果为 真 如果不符合或不满足给定的条件 则称关系运算的结果为 假 2020 2 3 7 C语言提供6种关系运算符 2020 2 3 8 关系运算符优先次序 1 前4种关系运算符的优先级别相同 后两种也相同 前4种高于后两种 2 关系运算符的优先级低于算术运算符 3 关系运算符的优先级高于赋值运算符 例 c a b等效于c a b a bc等效于a b c 2020 2 3 9 关系表达式 用关系运算符将两个表达式 算术 关系 逻辑 赋值表达式等 连接起来所构成的表达式 称为关系表达式 关系表达式的值是一个逻辑值 即 真 或 假 C语言没有逻辑型数据 以1代表 真 以0代表 假 注 任意非0值也作为真 2020 2 3 10 关系表达式举例 例5 3 假如a 3 b 2 c 1 则 a b 表达式的值为1 b cb c 表达式的值为0 2020 2 3 11 5 2逻辑运算符和逻辑表达式 1 逻辑与 相当日常生活中 而且 并且 只在两条件同时成立时为 真 2 逻辑或 相当日常生活中 或 两个条件只要有一个成立时即为 真 3 逻辑非 条件为真 运算后为假 条件为假 运算后为真 2020 2 3 12 逻辑运算举例 a b若a b为真 则a b为真 a b若a b之一为真 则a b为真 a若a为真 则 a为假 反之若a为假 则 a为真 运算符优先级 非 算术 关系 与 或 赋值 逗号 2020 2 3 13 逻辑表达式 逻辑表达式 用逻辑运算符 逻辑与 逻辑或 逻辑非 将关系表达式或逻辑量连接起来构成逻辑表达式 逻辑表达式的值是一个逻辑量 真 或 假 C语言编译系统在给出逻辑运算结果时 以1代表 真 以0代表 假 但在判断一个量是否为 真 时 以0代表 假 以非0代表 真 即认为一个非0的数值是 真 2020 2 3 14 逻辑表达式举例 例5 5 非0值作为逻辑值参与运算 真 此时与1的作用一样 若a 4 则 a 0 假 若a 4 b 5 则a b 1 真 a b 1 真 a b 1 真 4 0 2 1 真 c 真 d 真 1 2020 2 3 15 逻辑表达式举例 例5 6 计算 5 3 2 8 4 0 注意运算符优先级 数值所起作用 是逻辑值 原值 2020 2 3 16 练习 1 inta 1 b 1 c 1 则以下值为0的是 A b aB A输出结果是 特殊 a b ca b c闰年的条件 1 能被4整除 但不能被100整除 2 能被4整除 又能被400整除 year 4 0 year 100 0 year 400 0 2020 2 3 17 5 3if语句 if语句用来判定所给定的条件是否满足 根据判定的结果 真或假 决定执行给出的两种操作之一 2020 2 3 18 if语句的形式一 1if 表达式 语句例如 if x y printf d x 2020 2 3 19 算法 例如 if x 0 m 按从小到大的顺序输出两个数if a b c a a b b c 2020 2 3 20 if语句应用举例 例5 1 输入两个实数 按数值由小到大的次序输出这两个数 2020 2 3 21 if语句的形式二 语句一般格式if 表达式 语句1else语句2功能 计算表达式的值 如果它的值是一个非0值 逻辑真 就执行内嵌语句1 之后跳过内嵌语句2 执行后续语句 否则跳过内嵌语句1 执行内嵌语句2 之后执行后续语句 例如 if x y printf d x elseprintf d y 2020 2 3 22 双重分支语句的算法 例如 if x 0 m elsem 把输入的字符转换为大写字符if ch a 2020 2 3 23 if语句的形式三 语句一般格式if 表达式1 语句1elseif 表达式2 语句2 elseif 表达式m 语句melse语句n功能 依次计算并判断表达式i 为非0时执行后面的语句 都为0时 执行语句n无论执行完那个语句分支 都转到后续语句 2020 2 3 24 多重分支语句的算法 流程图 表达式m 2020 2 3 25 举例 例5 3 输入一个数 判断它是奇数还是偶数 如果是奇数则进一步判断它是否为5的倍数 2020 2 3 26 程序 main intx scanf d 运行jc4 4 2020 2 3 27 if语句的嵌套 2020 2 3 28 if语句嵌套的形式 简单if语句的嵌套形式if 表达式 if语句双重 或多重 分支if语句的嵌套形式if 表达式 if语句elseif语句 可以是各种形式的if语句 可以是各种形式的if语句 如果是简单if语句 必须用 括起 2020 2 3 29 再例如 if a b if a c if a d m 1 elsem 2 elsem 3 问题 哪一个else和哪一个if相匹配 规则 在嵌套的if else语句中 else总是与上面的离它最近的尚未配对的if配对 2020 2 3 30 if语句嵌套举例 2020 2 3 31 if语句嵌套举例 2020 2 3 32 条件运算符 一般形式 表达式1 表达式2 表达式3例如 returna b 1 0 执行过程如右图所示 2020 2 3 33 说明 1 条件运算符的执行顺序 先求解表达式1 若为非0 真 则求解表达式2 表达式2的值就是整个条件表达式的值 若表达式1的值为0 假 则求解表达式3 此时表达式3的值就是整个条件表达式的值 2 条件运算符的优先级高于赋值运算符 低于关系运算符和算术运算符 练习 1 inta 9 c 8 则 a c a c的值为10 2020 2 3 34 if语句的简单应用 例5 4 输入一个字符 如果是大写字母 则将其转换为小写字母输出 否则直接输出 输入 用getchar或scanf函数ch是否为大写字母 ch A ch 65 ch 90 大写字母转换为小写字母 ch ch 32输出 用putchar或printf函数 思路 2020 2 3 35 程序 include stdio h main charch ch getchar if ch A 程序运行情况如下 G g 运行jc4 1 可使用条件表达式代替 ch ch A 2020 2 3 36 学习if语句的难点 if else语句的配对正确用表达式描述条件例如 当x大于5小于10时令x自增if 5 x 10 x 正确判断内嵌语句例如 if x y x x 3 y y 2 elsex x 3 y y 2 if x 5 2020 2 3 37 5 4switch语句 多分支可以使用嵌套的if语句处理 但如果分支较多 嵌套的if语句层数多 程序冗长 降低可读性 C语言中switch语句是多分支选择语句 2020 2 3 38 switch语句的一般形式 switch语句的一般形式switch 表达式 case常量表达式1 语句序列1case常量表达式2 语句序列2 case常量表达式n 语句序列ndefault 语句序列n 1 功能 计算表达式的值 与常量表达式的值比较 等于第i个值时 顺序执行语句序列i i 1 n 1若与所有常量表达式值都不相等 执行语句序列n 1 2020 2 3 39 说明 1 switch括号后面的表达式 允许为任何类型 2 当 表达式 的值与某个case后面的常量表达式的值相等时 就执行此case后面的语句 如果表达式的值与所有常量表达式都不匹配 就执行default后面的语句 如果没有default就执行跳出switch 执行switch语句后面的语句 2020 2 3 40 说明 3 各个常量表达式的值必须互不相同 否则出现矛盾 4 各个case default出现的顺序不影响执行结果 5 执行完一个case后面的语句后 流程控制转移到下一个case中的语句继续执行 此时 case常量表达式 只是起到语句标号的作用 并不在此处进行条件判断 在执行一个分支后 可以使用break语句使流程跳出switch结构 即终止switch语句的执行 最后一个分支可以不用break语句 6 case后面如果有多条语句 不必用 括起来 7 多个case可以共用一组执行语句 注意break使用的位置 2020 2 3 41 switch语句的算法描述 N S结构图 例如 switch a case5 printf 当a等于5 输出 当a等于2 输出 当a是其他值 输出 2020 2 3 42 说明 case常量表达式i 等价于语句标号 计算出的表达式值等于哪个语句标号 就从哪个位置开始顺序向下执行语句序列 语句位置影响运行结果 例如 switch a case2 printf default printf case5 printf switch与break语句结合才能实现程序的分支 break break break 2020 2 3 43 注意 switch语句的书写格式 语句体本身必须用花括号括起 case和default后面如果有多条语句 则可以不必使用花括号 case和常量表达式之间必须有空格 default可以写在语句体的任何位置 也可以省略不写break语句可以改变case的语句标号作用 终止后续case语句序列的执行 switch语句和break语句结合 可以实现程序的选择控制 break语句还可以在循环语句中使用 允许switch嵌套使用 但同一个switch语句中 任意两个case的常量表达式值不能相同 例exp 写出下面程序的输出结果 main intx scanf d 若从键盘输入3 则程序的输出为 PassFailPoor 例 若变量已正确定义 则以下程序段的运行结果是 a 2 b 7 c 5 switch a 0 case1 switch b 10 case1 printf break case0 printf break case0 switch c 5 case0 printf break case1 printf break default printf break default printf A B C D 2020 2 3 46 程序举例 根据输入的成绩等级 打印出百分制分数段 main charx scanf c default printf 不及格 2020 2 3 47 程序二 根据输入的学生成绩 输出对应的等级 程序如下 main intg printf Enteramark scanf d switch g 10 case10 2020 2 3 48 case9 printf A n case8 printf B n case7 printf C n case6 printf D n default printf E n 当执行以上程序输入一个85分的学生成绩后 接着执行switch语句 首先计算switch后一对括号中的表达式 85 10 它的值为8 然后寻找与8吻合的case8分支 开始执行其后的各语句 程序的输出结果如下 2020 2 3 49 g 85 BCDE在输出与85分相关的B之后 又同时输出了与85分毫不相关的等级C D E 这显然不符合原意 2020 2 3 50 5 5选择结构程序设计举例 例5 5 求一元二次方程ax2 bx c 0的根 思路 一元二次方程的根取决于系数a b c求根公式 判别式d b2 4ac当d 0时 方程有两个相等的实根 x1 x2 b 2 a 当d 0时 方程有两个不相等的实根 x1 b sqrt d 2 a x2 b sqrt d 2 a 当d 0时 方程有两个虚根 x1 jp ipix2 jp ipi 实部jp b 2 a 虚部ip sqrt d 2 a 2020 2 3 51 例5 6求一元二次方程ax2 bx c 0的根 有以下几种可能 1 a 0 不是二次方程 2 b2 4ac 0 有两个相等的实根3 b2 4ac 0 有两个不等的实根4 b2 4ac 0 有两个共轭复数根 2020 2 3 52 算法 2020 2 3 5
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年度大型医疗设备引进与全面维护服务协议
- 简单商务劳动合同
- 洪水公务员面试题目及答案
- 应届毕业生实习协议书
- 商标代理委托合同协议
- 安徽公务员面试题及答案
- 公司股东竞业限制协议
- 《我的拿手好戏弹钢琴》满分作文(8篇)
- 三乙醇胺投资建设项目可行性报告(38亩)
- 涉氨企业安全知识培训课件
- 【初一】【七年级】【语文上】【秋季】开学第一课《“语”你相遇今朝》【课件】
- 奥维互动地图使用介绍课件
- 小学语文新课程标准最新版2022
- 室外雨污水、消防管网施工方案
- 传染病学总论-人卫最新版课件
- (中职)计算机组装与维修电子课件(完整版)
- 思想道德与法治全册教案
- (高职)旅游景区服务与管理电子课件完整版PPT全书电子教案
- 部编版七年级语文上册教案(全册)
- 《汉服》PPT课件(完整版)
- 某国有企业精细管理降本增效经验交流汇报材料企业降本增效.doc
评论
0/150
提交评论