第3章 选择结构流程和应用
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
3 多分支选择结构程序设计
嵌套if-else语句 switch语句
嵌套if-else语句
学一学 所谓嵌套就是在if-else语句的if或else子句中又包含了一个或多 个if-else语句。其目的是解决多分支选择问题,其一般形式为: if ( 条件1 ) 语句1; else if ( 条件2 ) 语句2; else if ( 条件3 ) 语句3; ┇ else if(条件n-1)语句n-1; else 语句n; 这是由双路选择语句所构成的多路选择结构。此处的“语句1”、 “语句2”…“语句n”可以是简单语句,也可以是用一对大括号 “{ }”括起来的复合语句。语句流程图如图3-6所示。
逻辑表达式
关系表达式只能描述单一的条件,而当选择判定的 条件有多个时,就要借助于逻辑表达式。用逻辑运算 符连接起来的式子称为逻辑表达式。一般形式为: 表达式1 && 表达式2 或: !表达式 或: 表达式1 || 表达式2 逻辑表达式执行时,先计算“表达式1”和“表达式2” 或“表达式”的值,然后进行逻辑运算,运算的结果 为真时逻辑表达式的值为1,否则为0。
再试一试
问题3.10 用 switch语句解 决问题3.8, 将成绩的百分 制转换为等级 制。
调试问题3.10 程序,观察运 行结果
练一练
问题:将星期一、星期二…星期六、星 期日依次编号为1、2…6、7,编一程序 从键盘输入星期的序号,可输出其对应 的英文。比如,输入6,可输 出”Saturday”。
switch语句
学一学 switch 语句是C语言中又一种实现多分支选择结构的 语句,其一般形式是: switch (表达式) { case 常量表达式1:语句序列1 case 常量表达式2:语句序列2 …… case 常量表达式n:语句序列n default:语句序列n+1 }
流程图
试一试
第 3章 选择结构流程和应用
学习目标
1 了解选择结构判定条件的构成 2 掌握单分支与双分支选择结构程序设计 3 掌握多分支选择结构程序设计
1 选择结构判定条件的构成
关系运算符与关系表达式 逻辑运算符与逻辑表达式
关系运算符
关系运算是对两个操作数之间进行比较的运算符, 其运算结果为逻辑值(或称“布尔”值,boolean) “真”或“假”。 C语言中提供六种关系运算符, 如表3-1所示。
关系表达式
用关系运算符把两个表达式连接起来的 式子称为关系表达式。一般形式为: 表达式1 关系运算符 表达式2 例如: x>3 y<100 !(x==0) x!=10
试一试
问题3.1 关系运算符和关系表达式的用法演示。
调试问题3.1程序,观察运行结果
逻辑运算符及其运算规则
逻辑运算可以表示运算对象的逻辑关系。 表3-2给出了C语言中逻辑运算符的种类、 功能及运算规则 。表3-3给出了逻辑运 算真值表,说明了当参加逻辑运算的运 算对象为不同组合时,各种逻辑运算得 到的结果。
条件
Y
N
语句
试一试
问题3.4 从键盘输入 一个数,输出其绝对 值。
调试问题3.4程序, 观察运行结果
练一练
问题:小明去参加一个同学的生日聚会, 同学的家长规定18岁以上的才可以饮酒, 所以需要编一程序根据输入的年龄打印 一张饮酒卷,使的能饮酒的同学可以获 取饮酒卷。
if-else语句
学一学 if-else语句是标准的if语句。 用来实现双分支选择结构, 其一般形式为: if ( 条件 ) 语句1; else 语句2;
条件运算符与条件表达式
学一学 C语言中有一种特有的运算符称为条件运算符, 即“?:”。它在某种程度上可以起到逻辑 判断的作用,一样可以实现双分支选择结构。 由条件运算符构成的表达式称为条件表达式, 与if-else语句具有相同的功能。其一般形式为: 表达式1 ?表达式2 :表达式3 运算规则为:如果“表达式1”的值为真, 则 条件表达式的运算结果等于“表达式2”的值, 否则,运算结果等于“表达式3”的值。
问题3.9 编一程序可 查询驾驶证可以驾驶 的车辆类型。要求从 键盘输入驾照的类型。 比如输入驾照类型 ‘C’,输出“你可以驾 驶小轿车”。其中, A牌驾照可驾驶大客 车、人货车和小轿车, B牌驾照可驾驶人货 车和小轿车,C牌驾 照可驾驶小轿车,D 牌驾照可驾驶摩托车。 调试问题3.9程序,观察运行结果
调试问题 3.8程序, 观察运行结 果
练一练
问题 1.根据图3-8给出的流程图编写程序,对比 问题3.7中的程序代码。 2.编一程序可查询驾驶证可以驾驶的车辆类 型的。要求从键盘输入驾照的类型可以输出 相应的准驾车型。比如输入驾照类型‘C’,输 出准驾车型:小轿车。其中,A牌驾照可驾驶 大客车、人货车和小轿车,B牌驾照可驾驶人 货车和小轿车,C牌驾照可驾驶小轿车,D 牌 驾照可驾驶摩托车。
试一试
问题3.6 : 编一程序从键 盘输入两个 整数,输出 较大的一个。
调试问题3.6 程序,观察运 行结果
练一练
问题: 1.请用if-else语句实现问题3-6的双分支 选择结构。 2.用条件表达式实现问题3-5的双分支选 择结构。
小结
1.if和else同属于一个if语句,else不能作为语句单独使用,它只是if语句的一 部分,与if配对使用。因此程序中不可以没有if而只有else。 2.if-else 语句在执行时,只能执行与if有关的语句或者执行与else有关的语句, 而不可能同时执行两者。 3.if语句的表达式可以是任意类型的C语言的合法的表达式,除常见的关系表 达式或逻辑表达式外,也允许是其它类型的数据,如整型、实型、字符型 等。 4.在if 和else的后面,可以是单条语句,也可以复合语句。单条语句时,注 意别忘记写分号“;”,复合语句时要注意“{}”的后面不能加“;”。 5.条件运算符的其结合性为“从右到左”(即右结合性)。比如 表达式iA>iB?iA:iC>iD?iC:iD相当于iA>iB?iA:(iC>iD?iC:iD),如果 iA=1,iB=2,iC=3,iD=4,则上述条件表达式的值等于4。 6.条件表达式一般形式(表达式1 ?表达式2 :表达式3)中的“表达式1”、 “表达式2”、“表达式3”的类型,可以各不相同。“表达式2”和“表达式 3”不仅可以是数值表达式,也可以是赋值表达式或函数表达式。比如 iX>iY?printf(“%d”,iX):printf(“%d”,iY) 如果iX=3,iY=4,则条件表达式执行结果为输出iY的值。
小结
1.嵌套if-else语句和switch语句都是用来实现多分支 选择结构的,它们的应用环境不同,嵌套if-else 语句 用于对多条件并列测试,从中取一的情形;switch语 句用于单条件测试,从其多种结果中取一种的情形。 2.一般情况下用switch能解决的问题,用嵌套if-else 也一样能解决,反之用嵌套if-else 语句能解决的问题 用switch也能解决,在使用时要根据具体问题灵活运 用。 3.如果多分支选择结构中需要判断的逻辑关系只是 是否相等,则最好用switch语句。switch语句的执行 效率高于嵌套if-else语句。
试一试
问题3.2 逻辑运算符和逻辑表达式的用法演示。请观察程序运行 结果。 【程序代码】
调试问题3.2程序,观察运行结果
再试一试
问题3.3 逻辑运算符&&和||用法演示。请观察程序 运行结果。
调试问题3.3程序,观察运行结果
小结
1. 不要把关系运算符“==”误用为赋值运算符“=”。比如,如果将判断 iX是否等于8的关系表达式“iX == 8”写成“iX = 8”,那么它永远为 “真”(不管iX原来的值是多少)。 2.正确书写关系表达式。如果表示“iX大于等于5,且iX小于等于20”,在 数学中可写为式子:5 ≤iX ≤ 20,而在C程序中,如果写成下面的表达 式: 5 <= iX <= 20 则是错误的。但这种错误是一种语义上的错误,而不是语法上的错误, 编译器查不出来,编译时不会报告错误,但运行时,不论iX为何值 (比如为3或60)表达式的值都是“真”,所以这种错误比较“隐蔽”, 不易被发现,希望引起注意。正确的写法应该是: 5 <= iX &&iX <= 20 3.算术运算符、关系运算符、逻辑运算符、赋值运算符在一起进行混合 运算时,各类运算符的优先级如下所示(自左至右,从高到低): !(非) —> 算术运算 —> 关系运算 —> && —> || —> 赋值运算
流程图如图3-3所示,若“条件”为 “真”,则执行“语句1”;否则执行 “语句2”。 此处的“语句1”和“语句2”可以是简单 语句,也可以是用一对大括号“{ }”括 起来的复合语句。
条件
Y
N
语句1
语句2
试一试
问题3.5 编一程序 控制电灯开关。从 键盘输入1表示开灯, 这时显示“the light is On”,输入0 或其它数表示关灯, 显示“the light is off” 。 调试问题
3.5程序, 观察运行结 果
练一练
问题:编一程序,从键盘输入一个整数, 判断它的奇偶性。如果输入的是奇数, 输出“ODD”,如果输入的是偶数,则 输出“EVEN”。 提示:一个数若能被2整除,则该数是 偶数,若这个数不能被2整除,则该数 为奇数。判断一个数能否被另一个数整 除可用求余运算,比如5%3=1,说明5 不能整除3,6%3=0,说明6可以整除3。
流程图
试一试
问题3.7 从键盘 输入一个自变 量x,求分段函 数y=f(x)的值, f(x)的表达 式如下:
调试问题 3.7程序, 观察运行结 果
再试源自文库试
问题3.8编一程序将成绩的 百分制转换为等级制。百分 制与等级制的对应关系如下: 90-100 对应A、80-89对应 B、70-79对应C、60-69对 应D、0-59对应E。
2 单分支和双分支选择结构程序 设计
简单if语句 if-else语句 条件运算符与条件表达式
简单if语句
学一学 简单if语句的形式为: if ( 条件表达式 ) 语句
其流程图如图3-1所示。语句的执 行过程是先计算“条件表达式”, 若值为“真”,则执行“语句”; 否则什么也不做。此处的“语句” 可以是简单语句,也可以是用一对 大括号“{ }”括起来的复合语句。