选择结构.ppt_第1页
选择结构.ppt_第2页
选择结构.ppt_第3页
选择结构.ppt_第4页
选择结构.ppt_第5页
已阅读5页,还剩37页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

2020年1月1日星期三 1 4 第四章 选择结构程序设计 2020年1月1日星期三 2 4 1C语言程序中语句的分类 p69 C语言将语句 statement 分成以下几类 控制语句函数调用语句空语句表达式语句复合语句 2020年1月1日星期三 3 if else 条件语句 switch 多分支选择语句 for 循环语句 while 循环语句 do while 循环语句 continue 结束本次循环语句 break 中止执行switch或循环语句 goto 转向语句 return 从函数返回语句 1 控制语句 2020年1月1日星期三 4 2 函数调用语句函数调用语句由一个函数调用加上一个分号 构成 例如 printf Hello 3 空语句只有一个分号 的语句 空语句不执行任何操作 例如 2020年1月1日星期三 5 4 表达式语句由C语言的任意合法表达式加上一个分号 构成 例如 i 使变量的值加1 x y 完成x y操作 但不将其结果赋给某一变量 所以该语句无实际意义 空语句 printf Hello 函数调用语句 函数调用属于表达式的一种 而空语句则是没有任何表达式的语句 2020年1月1日星期三 6 5 复合语句包含在由左花括号 开始 右花括号 结束的一组语句 在逻辑上构成一个整体 称为复合语句 例如 x k t y x 5 printf yis d y 任何可以放置语句的地方 都可以放置复合语句 2020年1月1日星期三 7 4 2关系运算符 逻辑运算符 条件运算符 p71 本章将着重讨论利用选择控制实现选择结构程序设计 选择控制是指根据指定的条件是否满足 选择下一步要执行的语句 满足为真 不满足为假 对于条件的描述 最为常见的就是关系表达式 其一般形式 4 2 1关系运算符和关系表达式 操作数关系运算符操作数 每个操作数可以是变量 常量或者是任意有效的C语言表达式 2020年1月1日星期三 8 大于a b大于等于a b小于a b小于等于a b等于a b不等于a b 6种关系运算符 关系表达式只能产生两个数值之一 0或1 一个判定为真的关系表达式的值为1 一个判定为假的关系表达式的值为0 C语言中 逻辑值真为1 逻辑值假为0 2020年1月1日星期三 9 关系运算符的优先级低于算术运算符的优先级 但高于赋值运算符的优先级 其结合性是左结合性 例如 a 20 b 70 c 50 d 90 有下列表达式 ad相当于 ad ad为假 整个表达式的值为0k a b c d相当于k a b c d 即k 90 140 即k 1 为变量k赋值1 整个表达式的值为1 2020年1月1日星期三 10 字符数据同样可以用关系运算符比较 比较的依据是其所用代码的数值 例如比较ASCII码的字符 表达式 a A 的值为0表达式 A C 的值为0表达式 C a 的值为1 2020年1月1日星期三 11 逻辑运算符将其操作数视为逻辑值 即 真 或 假 而C语言对于操作数真假的判定采取了如下原则 4 2 2逻辑运算符和逻辑表达式 p72 三种逻辑运算符 逻辑非 a逻辑与a b逻辑或a b 高 低 C语言中 任意非零值为逻辑值真 零为逻辑值假 2020年1月1日星期三 12 逻辑表达式 510 810 8 10 逻辑表达式 5 10 10 逻辑表达式 a 例如 答案分别为 0 0 1 1 0 2020年1月1日星期三 13 条件运算符 是C语言中惟一的一个三目运算符 其表达式的一般形式 4 2 3条件运算符和条件表达式 操作数1 操作数2 操作数3 条件表达式的执行过程为 先求解操作数1的逻辑值 如果为非零值 真 则求解操作数2 并将操作数2的值作为该条件表达式的值 如果为零值 假 则求解操作数3 并将操作数3的值作为该条件表达式的值 2020年1月1日星期三 14 条件运算符的优先级高于赋值运算符 但低于算术运算符 关系运算符及逻辑运算符 我们来看一个例子 y x 60 P F 如果x大于或等于60 则y被赋值 P 该表达式的值为 P 如果x小于60 则y被赋值 F 该表达式的值为 F 条件运算符为右结合 即 自右向左 见p73 2020年1月1日星期三 15 C语言提供两种选择控制语句 if语句switch语句 4 3选择结构的程序设计 p73 所有程序的正常执行次序通常都是顺序的 然而 在许多问题的解决方案中 常会根据情况的不同 采取不同的处理方式 2020年1月1日星期三 16 if 表达式 语句Aelse语句B 4 3 1if语句 if语句的一般形式 2020年1月1日星期三 17 else子句 是可选的 当无else子句时的if语句形式为 if 表达式 语句 2020年1月1日星期三 18 当if语句的目标块中又出现if语句时 C语言有如下规定 else子句总与距它最近的if配套 例如 if k if h do1 if i do2 这个if elsedo3 和这个else组合 if t do4 elsedo5 这个else和if k 组合 2020年1月1日星期三 19 基于上述规则 一个常用的嵌套if语言构成多分支选择结构 也称为if else if阶梯 其一般形式如下 if 表达式1 语句1elseif 表达式2 语句2elseif 表达式3 语句3 else语句n 2020年1月1日星期三 20 C语言中 switch语句同样可以实现多分支选择 p80 switch语句的一般形式是 4 3 2switch语句 switch 表达式 case常量1 语句序列1break case常量2 语句序列2break case常量3 语句序列3break default 语句序列n 可选 可选 例题见p75 2020年1月1日星期三 21 switch语句可以作为另一个switch语句中语句序列的一部份 形成嵌套switch语句 这时 即使内外层的常量相同 也不会引起冲突 例如 switch x case1 printf process x y n switch y case0 printf Dividedby0error n break case1 process x y break case2 2020年1月1日星期三 22 例4 1从键盘读入两个整数 然后显示这两个数的商 4 4选择结构的程序设计举例 p76 includevoidmain inta b printf Entertwonumbers separateby scanf d d 2020年1月1日星期三 23 例4 2从键盘读入年份 然后判断该年是否为闰年 符合下列条件之一的年份都是闰年 能被400整除的年份 不能被100整除 但可以被4整除的年份 2020年1月1日星期三 24 includevoidmain intyear leap printf Enteryear scanf d 2020年1月1日星期三 25 例4 3企业发放的奖金根据利润提成 利润 I 不超过10万元时 奖金可提10 利润不超过20万元时 其中的10万元按10 提成 高于10万元的部分提成7 5 20万到40万元 其中的20万元按前述b方法提成 高于20万元的部分提成5 40万到60万元 其中的40万元按前述c方法提成 高于40万元的部分提成3 60万到100万元 其中的60万元按前述d方法提成 高于60万元的部分提成1 5 高于100万元时 其中的100万元按前述e方法提成 超过100万元的部分提成1 从键盘输入当月利润I 求应发放奖金总数 2020年1月1日星期三 26 includevoidmain longinti intbonus1 bonus2 bonus4 bonus6 bonus10 bonus printf Enterprofitearned scanf ld 将每一段基数以bonus1 2 4 6 10保存 2020年1月1日星期三 27 if i 100000 bonus i 0 1 elseif i 200000 bonus bonus1 i 100000 0 075 elseif i 400000 bonus bonus2 i 200000 0 05 elseif i 600000 bonus bonus4 i 400000 0 03 elseif i 1000000 bonus bonus6 i 600000 0 015 elsebonus bonus10 i 1000000 0 01 printf bonus d n bonus 2020年1月1日星期三 28 例4 4输入某年某月某日 判断这一天是这一年的第几天 解析 以2000年4月8日为例 应该先把前三个月的天数加起来 然后再加上8天即本年的第几天 遇闰年情况 且输入月份大于3时需要多加一天 2020年1月1日星期三 29 includevoidmain intday month year sum leap printf npleaseinputyear month day n scanf d d d 2020年1月1日星期三 30 sum sum day 再加上某天的天数 if year 400 0 year 4 0 Pleaseinputyear month day2007 3 12Itisthe71thdayoftheyear Pressanykeytocontinue 运行结果 Pleaseinputyear month day2000 3 12Itisthe72thdayoftheyear Pressanykeytocontinue 2020年1月1日星期三 31 第四章小结C语句可分为控制语句 表达式语句及复合语句 C语言中 逻辑真值为1 逻辑假值为0 C语言中 将非零值判定为逻辑真 将零值判断为逻辑假 关系 逻辑 条件运算符的优先级及结合性 其表达式的意义及应用 if语句用于实现单路 两路和多路分支 switch也是多选一的分支语句 它是if语句的一个补充 elseif结构 当用它编制程序时会增加可读性 使用if语句及switch语句进行选择结构程序设计 2020年1月1日星期三 32 作业 P85 861 4题做在书上5 9题做在作业本上10题选作 2020年1月1日星期三 33 逻辑运算符和逻辑表达式习题 例1 inta b c 1 a b c求a b c的值 a b c求a b c的值 a 0 b 1 c 1 求值短路 a 0 b 0 c 0 例2 inta b d 241 a d 100 9 b 1 析 a 2b 1 先d 100 2后2 9 2020年1月1日星期三 34 例3 inta 5 b 6 c 7 d 8 m 2 n 2 m a b n c d 后n的值为 2 求值短路 例4 10 9的值 1 例5 intx y z t x y z 1 t x y t 1 x 2 y 1 z 1 求值短路 逻辑运算符和逻辑表达式习题 2020年1月1日星期三 35 例6 当c的值不为0时 在下列选项中能正确将c的值赋给变量a b的是A c b a B a c b c C a c b c D a c b c 例7 能正确表示a和b同时为正或同时为负的逻辑表达式是A a 0 b 0 a 0 b 0 a0 a b0 D a b 0 逻辑运算符和逻辑表达式习题 2020年1月1日星期三 36 例8 intx 1 y 1 x y 1 例9 intx y t x y 3 t x y y 3 例10 若变量c为char类型 能正确判断出c为小写字母表达式是A a a c c D c a c z D 逻辑运算符和逻辑表达式习题 2020年1月1日星期三 37 作业讲评 5voidmain intx t scanf inputanumber d x t x 17 if t printf No n elseprintf Yes n 2020年1月1日星期三 38 6voidmain intmoney week scanf week d 2020年1月1日星期三 39 7voidmain inta b c max scanf d d d 2020年1月1日星期三 40 8voidmain intx y z t scanf d d d x y z if x y t x x y y t if x z t x x z z t if y z t y y z z t printf d d d x y z 2020年1月1日星期三 41 9 可以先加一个判断正整数的语句 if a printf x是5位数 逆序是 d d d d d n e d c b

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论