C程序设计第6章选择结构程序设计.ppt

上传人:max****ui 文档编号:6328733 上传时间:2020-02-22 格式:PPT 页数:33 大小:527.31KB
返回 下载 相关 举报
C程序设计第6章选择结构程序设计.ppt_第1页
第1页 / 共33页
C程序设计第6章选择结构程序设计.ppt_第2页
第2页 / 共33页
C程序设计第6章选择结构程序设计.ppt_第3页
第3页 / 共33页
点击查看更多>>
资源描述
第6章选择结构程序设计 选择结构的N S流程图如图6 1所示 图6 1选择结构的N S流程图 P为选择的条件 对于执行A还是B要根据条件P的判断结果来决定 如果条件P的结果为真则执行A 如果条件P的结果为假则执行B 这里条件P的结果就成为执行A还是B的关键所在 P是一个判断的条件 其结果为真或者假 将其称为 逻辑量 C语言中没有提供逻辑型变量 可以使用整型数据去描述1表示真 0表示假 在C语言中任意确定的值都可作为逻辑量处理 当作为逻辑量处理时 如果该值为非0 则表示真 1 如果该值为0 则表示假 0 下面讲述条件P的逻辑量表示方法 6 1逻辑量的表示方法6 2if语句6 3switch语句6 4选择结构程序设计举例 6 1逻辑量的表示方法C语言中逻辑量是用整型数据来表示的 用 来表示真或成立 用 来表示假或不成立 逻辑量的表示是非常灵活的 具体表示方法有以下几种方式 6 1 1关系表达式 1 关系运算符关系运算是一种比较运算符两侧运算对象大小的运算 完成两个运算对象比较 运算结果为成立与不成立 用1和0表示 关系运算符有以下6种 关系运算符是双目运算符 其中前4种的优先级相同但要高于后2种 后2种优先级相同 所有6种运算符的优先级都高于赋值运算符 但都低于算术运算符 此6种关系型运算符均为左结合性 2 关系表达式用关系运算符将运算对象连接起来的合乎C语言规则的表达式称为关系表达式 例如 a b 3 7 10 a a a b a 都是合法的C语言关系表达式 关系表达式的求解遵循表达式求解规则 关系运算的结果只有两种可能 要么关系成立为真 1 要么关系不成立为假 0 例如有整型变量a b 且a 3 b 5 求解表达式 a b a 算术运算符 的优先级高于关系运算符 因此先计算a b的值为8 之后运算8 a 而 a 参加运算时需转换为整型数97运算 实际运算的是8 97 判断后其结果为不成立 表达式的运算结果为0 若有关系表达式0 x 10 则其运算结果为逻辑量1 表达式中两个 运算的优先级相同 于是首先运算0 x x的值无论是多少 运算结果只能是1或者0 然后要么运算1 10 要么运算0 10 其运算结果必然为1 6 1 2逻辑运算和逻辑表达式1 逻辑运算符C语言中逻辑运算符一共有3个 和 其中 运算的优先级最高 仅次于小括号 为左结合性 的优先级高于 它们的优先级都低于关系运算符 高于赋值运算符 2 逻辑表达式用逻辑运算符将逻辑量连接而形成的合乎C语言规则的表达式称为逻辑表达式 参与逻辑运算的运算对象是逻辑量 在C语言中任意表达式都可以作为逻辑量来处理 具体处理规则是表达式值非0则为1 否则为0 逻辑运算的结果和关系运算一样 也是逻辑量 例如有整型变量a 3 b 4 c 5 求解表达式 x a y b 0 x a为赋值表达式 其值为变量的值 原式 3 4 0 3为逻辑运算要把3转化为逻辑量 0 4 00 4中要把4转化为逻辑量1 0 1 0 0 0 0 6 1 3实际问题中逻辑量的描述 1 图6 4所示x轴上阴影区间的数据描述 图6 4逻辑量的表示示意图 从该图可知 x的值应该在 1到2之间 其值既要满足x 1又要满足x 2 即x 1和x 2同时成立 两个过程同时成立其结果才成立 此运算为逻辑与 可得表达式x 1 x 2 注意 1 x 2是一个关系表达式 不能表示该区间 3 闰年问题假定闰年为year 判定是否闰年的标准为 如果该年能被4整除且不能被100整除 或者该年能被400整除 则都为闰年 能被4整除且不能被100整除 可表示为year 4 0 year 100 0 能被400整除可表示为year 400 0 两者只要有一者成立即为闰年 是逻辑或关系 闰年问题的表达式为year 4 0 year 100 0 year 400 0 也可表示为 year 4 year 100 year 400 6 2 1if语句的格式if语句的格式为 if 逻辑量 语句1 else语句2 if和else是构成if语句的关键字 语句中的逻辑量是选择结构的条件 表示else分支可有可无 if语句的N S流程图如图6 5所示 语句1和语句2都只能是单条语句 如果在为真或为假的分支中需执行多个操作 应该使用复合语句将多个操作构成一条语句 语句1是选择结构必需的语句 else分支可有可无 6 2if语句 if语句是实现选择结构算法的具体语句 图6 5if语句的N S流程图 使用if语句实现选择结构时 语句中的逻辑量对应于选择条件P 语句1对应于A操作 语句2对应于B操作 if语句执行时 首先判断逻辑量的值 如果逻辑量为1 执行语句1 如果逻辑量为0 执行else分支对应的语句2 例6 2求出两整数中的最大值 根据流程图得到程序 main intm n scanf d d 图6 7例6 2的流程图 使用if语句要注意以下几点 1 if语句是一条语句 2 逻辑量是if语句选择判断的条件 C语言中任意确定的值都可以作为逻辑量处理 3 逻辑量为1和为0的分支都只能是单条语句 如果要执行多个操作的话 应该将多个操作复合为单条语句才能出现在if的分支结构中 4 分支中出现的语句1是复合语句的时候 后不应该有 5 语句中语句1是条件语句中必不可少的部分 6 正确理解if语句和N S选择结构流程图的对应关系 嵌套主要用于处理多条件的题目 设计嵌套选择结构时 应清晰描述各条件之间的约束关系 嵌套的if语句可以简单描述如下 嵌入的if语句是在当外围的if语句的条件p1的逻辑量值为1时才可以执行 即其作为外围if语句的条件成立时的执行语句 嵌入在外围if内 当然语句1 语句2 语句3也可以是if语句 具体的嵌套形式和具体题目中的多条件是密切相关的 if语句的嵌套形式应建立在对具体问题的分析上 6 2 2if语句的嵌套及多条件结构的实现 例6 4求函数中x为任意值时y 的值 由于if选择结构仅有两个分支 而此分段函数x的定义域为三分支 因此当确定x的关系表达式时 其中必然有一个分支包含另外两部分定义域 需在此基础上作进一步的条件判断 根据流程图得到如下程序 main main floatx y floatx y scanf f 图6 9例6 4的流程图 图6 10例6 4的流程图2 6 2 3条件表达式条件运算符由两个符号 和 复合而成 此运算符为C语言中惟一的一个三目运算符 其优先级只比赋值运算符和逗号运算符高 结合性为从右到左 条件表达式的一般格式为 表达式1 表达式2 表达式3其中表达式1是作为逻辑量处理的 条件表达式中由于有条件限制 所以应先进行条件表达式的运算 根据条件表达式1表示的逻辑量值选取表达式2或表达式3的结果作为整个表达式的值 其执行过程如下 当表达式1的逻辑量值为1时 选取表达式2的结果作为整个表达式的值 当表达式1的逻辑量值为0时 选取表达式3的结果作为整个表达式的值 假定a 5 b 3 则表达式max a b a b的求解过程如下 此表达式右边为一条件表达式 由于条件运算符的优先级高于赋值运算符 应先计算条件表达式的值 再通过赋值运算符把得到的值赋给max 在条件表达式中 首先计算表达式a b的逻辑量值 根据题意 a b表达式的逻辑量值为1 则a为条件表达式的结果 为5 那么条件表达式的值为5 可得max的值为5 6 3switch语句 如果题目中的多条件是有规律的 则可以采用switch语句来实现 switch语句称为分支语句 又称为开关语句 switch的具体形式如下 switch 表达式 case整型常量表达式1 语句组1 break case整型常量表达式2 语句组2 break case整型常量表达式n 语句组n break default 语句组n 1 switch case default和break都是构成多分支语句的关键字 表示break可有可无 其中表达式是任意类型的表达式 但运算结果会自动转换为整型 整型常量表达式只能由整型常量构成 break语句的作用是结束switch语句 执行switch的后续语句 语句组可以是单条语句 也可以是多条语句 多条语句无需用复合语句去表示 而在if else结构中的语句1和语句2只能是单条语句 switch语句中的一对花括号是必须书写的 是switch语句构成的必要部分 switch语句的具体执行过程为 根据switch表达式的值 寻找switch语句的执行入口 自上而下和case后的整型常量表达式的值进行比较 如果相等则执行其后的语句组 假定入口是整型常量表达式2 那么该语句执行语句组2 当语句组2执行完毕后 若有break语句 则中断switch语句的执行 否则继续执行语句组3 如果没有和表达式的值相匹配的整型常量表达式 则执行default后的语句组 case后的整型常量表达式的值实际上就是switch后括号内的表达式的各种可能的取值 如果能穷尽表达式各种可能的取值 则语句中可省去default分支 否则最好不要省略default 因为default表示的是switch语句在没有找到匹配入口时的语句执行入口 例6 6输入一同学的成绩 判断其成绩等级 等级范围为 90以上等级为A89 80等级为B79 70等级为C69 60等级为D60以下等级为E 假定成绩为score 可以得到表达式 int score 10 当表达式的值为10和9时 对应于90分以上的条件分支 为8时对应于89 80分段的条件分支 以下的取值和对应的分支可以依次类推 60分以下可用switch中default分支来描述 程序如下 main floatscore scanf f score 10中score得到的结果为浮点型 系统会自动转换为整型 常量表达式为10的分支 由于与9的分支均为A级 利用switch的特点可以不写值为10的分支对应的语句 使用switch语句应注意以下几点 1 switch语句中表达式可为任意类型 但运算结果为整型 case后的表达式必须是整型常量表达式 2 每个case后的常量表达式的值不能相同 否则会自相矛盾 无法判断 3 case及default的顺序对运行结果不产生影响 4 若无break语句进行switch语句的强制跳出 则从该处顺序执行其余语句 直至跳出或执行结束 5 case和其后的整型常量表达式中间应有空格 6 4选择结构程序设计举例 例6 10批发钢材 每吨批发金额为1000元 计算批发金额 批发折扣如表6 3所示 表6 3例6 10折扣表 表6 4例6 10折扣规律表1 main floatt d m scanf f x9d是字符 的ASCII码 main floatt d m scanf f
展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


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


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

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


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