第4章-选择结构程序设计ppt课件

上传人:资****亨 文档编号:130066708 上传时间:2020-04-24 格式:PPT 页数:39 大小:390.50KB
返回 下载 相关 举报
第4章-选择结构程序设计ppt课件_第1页
第1页 / 共39页
第4章-选择结构程序设计ppt课件_第2页
第2页 / 共39页
第4章-选择结构程序设计ppt课件_第3页
第3页 / 共39页
第4章-选择结构程序设计ppt课件_第4页
第4页 / 共39页
第4章-选择结构程序设计ppt课件_第5页
第5页 / 共39页
点击查看更多>>
资源描述

《第4章-选择结构程序设计ppt课件》由会员分享,可在线阅读,更多相关《第4章-选择结构程序设计ppt课件(39页珍藏版)》请在金锄头文库上搜索。

1、 4 选择结构程序设计 第 章 选择结构和条件判断 C语言有两种选择语句 if语句 用来实现两个分支的选择结构switch语句 用来实现多分支的选择结构 if语句例题 例4 1 在例3 5的基础上对程序进行改进 题目要求解得ax2 bx c 0方程的根 由键盘输入a b c 假设a b c的值任意 并不保证b2 4ac 0 需要在程序中进行判别 如果b2 4ac 0 就计算并输出方程的两个实根 如果b2 4ac 0 就输出 此方程无实根 的信息 include include 程序中要调用求平方根函数sqrtintmain doublea b c disc x1 x2 p q disc是判别式

2、sqrt b b 4ac scanf lf lf lf 用if语句实现选择结构 例4 2 输入两个实数 按由小到大的顺序输出这两个数 includeintmain floata b t scanf f f 解题思路 只要做一次比较 然后进行一次交换即可 用if语句实现条件判断 用if语句实现选择结构 例4 3 输入3个数a b c 要求按由小到大的顺序输出 includeintmain floata b c t scanf f f f if语句的一般形式 if 表达式 语句1 else语句2 表达式 可以是关系表达式 逻辑表达式 甚至是数值表达式方括号内的部分 即else子句 为可选的 既可以

3、有 也可以没有语句1和语句2可以是一个简单的语句 也可以是一个复合语句 还可以是另一个if语句 关系运算符和关系表达式 在C语言中 比较符 或称比较运算符 称为关系运算符 所谓 关系运算 就是 比较运算 将两个数值进行比较 判断其比较的结果是否符合给定的条件 关系运算符及其优先次序 小于 关系运算符 1 小于等于 2 大于 3 大于等于 4 等于 5 不等于 6 前 种关系运算符的优先级别相同 后2种也相同 前 种高于后 种 关系运算符的优先级低于算术运算符 关系运算符的优先级高于赋值运算符 算术运算符 赋值运算符 高优先级低 c a b等效于c a b 关系运算符的优先级低于算术运算符 a

4、b c等效于 a b c 大于运算符 的优先级高于相等运算符 a bc等效于a b c 关系运算符的优先级高于赋值运算符 关系表达式 用关系运算符将两个数值或数值表达式连接起来的式子 称为关系表达式 关系表达式的值是一个逻辑值 即 真 或 假 在C的逻辑运算中 以 1 代表 真 以 0 代表 假 若a 3 b 2 c 1 则 d a b 由于a b为真 因此关系表达式a b的值为1 所以赋值后d的值为1 f a b c 则f的值为0 因为 运算符是自左至右的结合方向 先执行 a b 得值为1 再执行关系运算 1 c 得值0 赋给f 所以f的值为0 逻辑运算符和逻辑表达式 用逻辑运算符将关系表达

5、式或其他逻辑量连接起来的式子就是逻辑表达式 逻辑运算符及其优先次序 和 是双目运算符 要求有两个运算对象 操作数 是单目运算符 只要有一个运算对象优先次序 非 与 或 即 为三者中最高的 逻辑运算符中的 和 低于关系运算符 高于算术运算符逻辑运算结果不是0就是1 不可能是其他数值 而在逻辑表达式中作为参加逻辑运算的运算对象可以是0 假 或任何非0的数值 按 真 对待 a b c 只有a为真 非0 时 才需要判别b的值 只有当a和b都为真时才需要判别c的值 a b c 只要a为真 非0 就不必判断b和c 只有a为假 才判别b a和b都为假才判别c 逻辑表达式 在逻辑表达式的求解中 并不是所有的逻

6、辑运算符都被执行 只是在必须执行下一个逻辑运算符才能求出表达式的解时 才执行该运算符 既然关系表达式和逻辑表达式的值是0和1 而且在判断一个量是否为 真 时 以0代表 假 以非0代表 真 那么就可以理解为什么在if语句中表达式可以是任何数值表达式 if x 0 语句1 括号内的表达式是关系表达式 如果x不等于0 执行语句1if x 0 y 0 语句2 表达式是逻辑表达式 如果x和y都大于0 执行语句2if x 语句3 表达式是变量 如果x不等于0 则条件判断结果为真 执行语句3if 1 语句4 表达式是非0整数 条件判断结果为真 执行语句4if 0 语句5 表达式是整数0 条件判断结果为假 不

7、执行语句5 接着执行下一语句if x 3 5 语句6 表达式是实数表达式 若x 3 5不等于0 则条件判断结果为真 执行语句6 判别用year表示的某一年是否闰年 可以用一个逻辑表达式来表示 闰年的条件是符合下面二者之一 能被 整除 但不能被100整除 如2008 能被400整除 如2000 小例子 year 4 0 year 100 0 year 400 0 条件运算符和条件表达式 表达式1 表达式2 表达式3 条件运算符由两个符号 和 组成 必须一起使用 要求有3个操作对象 称为三目 元 运算符 它是 语言中唯一的一个三目运算符 条件运算符的执行顺序 先求解表达式1 若为非0 真 则求解表

8、达式 此时表达式 的值就作为整个条件表达式的值 若表达式1的值为0 假 则求解表达式 表达式 的值就是整个条件表达式的值 if a b max a elsemax b max a b a b a b max a max b 表达式2和表达式3是赋值表达式 或 条件运算符和条件表达式 例4 4 输入一个字符 判别它是否为大写字母 如果是 将它转换成小写字母 如果不是 不转换 然后输出最后得到的字符 includeintmain charch scanf c 解题思路 用条件表达式来处理 当字母是大写时 转换成小写字母 否则不转换 选择结构的嵌套 if if 语句1else语句2elseif 语句

9、3else语句4 内嵌if 内嵌if 注意 if与else的配对关系 else总是与它上面的最近的未配对的if配对 如果if与else的数目不一样 为实现程序设计者的思想 可以加花括号来确定配对关系 if if 语句1elseif 语句2else语句3 编程序者把else写在与第1个if 外层if 同一列上 意图是使else与第1个if对应 但实际上else是与第2个if配对 因为它们相距最近 if if 语句1内嵌if else语句2 条件运算符和条件表达式 includeintmain intx y scanf d includeintmain intx y scanf d y10 x 1

10、 用switch语句实现多分支选择结构 例4 6 要求按照考试成绩的等级输出百分制分数段 A等为85分以上 B等为70 84分 C等为60 69分 D等为60分以下 成绩的等级由键盘输入 includeintmain chargrade scanf c 用switch语句实现多分支选择结构 1 括号内的 表达式 其值的类型应为整数类型 包括字符型 2 花括号内是一个复合语句 内包含多个以关键字case开头的语句行和最多一个以default开头的行 case后面跟一个常量 或常量表达式 它们和default都是起标号作用 用来标志一个位置 执行switch语句时 先计算switch后面的 表达式

11、 的值 然后将它与各case标号比较 如果与某一个case标号中的常量相同 流程就转到此case标号后面的语句 如果没有与switch表达式相匹配的case常量 流程转去执行default标号后面的语句 3 可以没有default标号 此时如果没有与switch表达式相匹配的case常量 则不执行任何语句 4 各个case标号出现次序不影响执行结果 5 每一个case常量必须互不相同 否则就会出现互相矛盾的现象 6 case标号只起标记的作用 在执行switch语句时 根据switch表达式的值找到匹配的入口标号 在执行完一个case标号后面的语句后 就从此标号开始执行下去 不再进行判断 因此

12、 一般情况下 在执行一个case子句后 应当用break语句使流程跳出switch结构 最后一个case子句 今为default子句 中可不加break语句 7 在case子句中虽然包含了一个以上执行语句 但可以不必用花括号括起来 会自动顺序执行本case标号后面所有的语句 当然加上花括号也可以 8 多个case标号可以共用一组执行语句 用switch语句实现多分支选择结构 例4 7 用switch语句处理菜单命令 在许多应用程序中 用菜单对流程进行控制 例如从键盘输入一个 A 或 a 字符 就会执行A操作 输入一个 B 或 b 字符 就会执行B操作 选择结构程序综合举例 例4 8 写一程序

13、判断某一年是否为闰年 includeintmain intyear leap printf enteryear scanf d year被400整除 year被100整除 if year 4 0 leap 0 elseif year 100 0 leap 1 elseif year 400 0 leap 0 elseleap 1 if year 4 0 选择结构程序综合举例 例4 9 求ax2 bx c 0方程的解 include includeintmain doublea b c disc x1 x2 realpart imagpart scanf lf lf lf b2 4ac 0 选择

14、结构程序综合举例 例4 10 运输公司对用户计算运输费用 路程越远 运费越低 标准如下 s 250没有折扣250 s 5002 折扣500 s 10005 折扣1000 s 20008 折扣2000 s 300010 折扣3000 s15 折扣 includeintmain intc s floatp w d f printf pleaseenterprice weight discount 提示输入的数据scanf f f d p 每吨每千米货物的基本运费w 货物重量s 运输距离d 折扣f 总运费f p w s 1 d 4 方法一 includeintmain inta b c printf

15、 请输入3个整数 scanf d d d elseif a c printf max d n c elseprintf max d n a return0 4 方法二 includeintmain inta b c temp max printf 请输入3个整数 scanf d d d temp a b a b 将a和b中的大者存入temp中max temp c temp c 将a和b中的大者与c比较 取最大者printf 3个整数的最大数是 d n max return0 5 include include defineM1000intmain inti k printf 请输入一个小于 d

16、的整数i M scanf d if i M printf 输入的数据不符合要求 请重新输入一个小于 d的整数i M scanf d 6 includeintmain intx y printf 输入x scanf d if x 1 y x printf x 3d y x d n x y elseif x 10 y 2 x 1 printf x d y 2 x 1 d n x y else y 3 x 11 printf x d y 3 x 11 d n x y return0 8 includeintmain floatscore chargrade printf 请输入学生成绩 scanf f while score 100 score 0 printf 输入有误 请重输 scanf f case7 grade C break case6 grade D break case5 case4 case3 case2 case1 case0 grade E printf 成绩是 5 1f 相应的等级是 c n score grade return0 11 includeintmain i

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 高等教育 > 大学课件

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号