C语言程序设计4第5章选择结构.ppt

上传人:max****ui 文档编号:6333537 上传时间:2020-02-23 格式:PPT 页数:57 大小:731.31KB
返回 下载 相关 举报
C语言程序设计4第5章选择结构.ppt_第1页
第1页 / 共57页
C语言程序设计4第5章选择结构.ppt_第2页
第2页 / 共57页
C语言程序设计4第5章选择结构.ppt_第3页
第3页 / 共57页
点击查看更多>>
资源描述
第5章选择结构程序设计ProgramDesignofTheSelectionTypeStructure 5 1关系运算符和关系表达式RelationOperatorsandExpressions 6种关系运算符 小于lessthan 小于或等于 大于largerthan 大于或等于 等于equalto 不等于notequalto 结合性 自左向右 一 关系运算符及其优先次序 优先级相同 高 优先级相同 低 5 1关系运算符和关系表达式一 关系运算符及其优先次序 与其它运算符优先级的比较 例如 c d a b 等效于 c d a b 1 什么是关系表达式 二 关系表达式 如 a b by s f d 2 关系表达式的值 运算结果 逻辑值1或非零 真 0 假 如 设a 3 b 2 c 1求下面关系表达式的值 c b a b 1b c a 值为 值为 值为 如果关系运算对象的类型不同 也要先进行类型转换 5 2逻辑运算符和逻辑表达式 3种逻辑运算符 逻辑非 逻辑与 逻辑或 一 逻辑运算符及其优先次序 优先级 高 低 如 aa为真 则 a为假 a ba b之一为真 则a b为真 a ba b同时为真 则a b为真 5 2逻辑运算符和逻辑表达式一 逻辑运算符及其优先次序 与其它运算符的比较 高 低 例如 c d a b a b等效于 c d a b a b 1 2 负号 类型 3 算术 4 算术 关系 关系 11 逻辑 12 逻辑 14 赋值运算符15 逗号运算符 1 什么是逻辑表达式 二 逻辑表达式 用逻辑运算符将逻辑运算对象连结起来的式子 如 a b bb 2 逻辑表达式的值 如 5 3 2 8 4 b d 值为1 值为 运算对象 以数值非0为真 以0为假运算结果 逻辑值 只有假为0 真为1两种取值 5 3if语句 1 if 表达式 语句 一 if语句的三种形式 执行过程 当表达式的值为 真 非零 时 执行语句 否则 不执行语句 如 if x y z x 2 if 表达式 语句1else语句2 如 if x y z x elsez y 执行过程 当表达式的值为 真 非零 时 执行语句1 否则 执行语句2 如 if grade 85 level A elseif grade 70 level B elseif grade 60 level C elselevel D 3 if 表达式1 语句1elseif 表达式2 语句2elseif 表达式3 语句3 elseif 表达式n 语句nelse语句n 1 if语句说明 if和elseif后面的表达式一般为逻辑表达式或关系表达式 也可以是任意数值类型表达式 该语句是合法的 if 3 0 printf ok if语句中的 语句 为一个简单语句或复合语句 如 下面哪个程序段有错 if x 0 printf X d n x printf Xispositive n elseprintf X d n x printf Xisnegative if x 0 printf X d n x printf Xispositive n else printf X d n x printf Xisnegative 二 if语句的嵌套 在if语句中又包含一个或多个if语句 称为if语句的嵌套 一般形式 if 条件1 if 条件2 语句1else语句2elseif 条件3 语句3else语句4 内嵌if 内嵌if 如 if x 0 if y 0 printf x 0 y 0 elseprintf x 0 y0 printf x0 elseprintf x 0 y 0 说明 else与if的匹配原则是 一个else应与其之前距离最近且没有与其它else配对的if配对 if n 18 if n 60 printf adult elseprintf minor if n 18 if n 60 printf adult else elseprintf minor 缩排 incldemain intx scanf d 三 用if语句实现选择结构举例 main intx y scanf d 例 任意输入三个不相等的数 将其按由小到大的顺序输出 main floata b c t scanf f f f a b c a 7 b 3t a 7 a b 3 b t 7 注意区别 if season spring printf flower elseIf season summer printf hot elseIf season autumn printf fruit elseprintf snow if e1 s1 if e2 s2 if e3 s3 if e1 s1 elseif e2 s2 elses3 if sex male printf Man If age 18 printf adult If profession armyman printf PLA 四 条件运算符和条件表达式 如 if a b max a elsemax b 若a 3 b 8 则max 如 a b a b 等效于 max a b a b 表达式2 表达式1为真 条件表达式 表达式3 表达式1为假 C中唯一的三目运算符 目的 简化if语句 条件运算符的优先级 算术运算符 关系运算符 逻辑运算符 除 逗号运算符 赋值运算符 条件运算符 如 x a b c c d a b d 等效于 x a b c c d a b d 条件运算符的结合方向 自右至左 如 a b a c d c d等效于 a b a c d c d 例 把输入字符中的小写字符转换成大写并输出 如果是其他字符 则原样输出 includemain charch scanf c main inta b c t max scanf d d d 例 输入3个数 把其中最大的数输出 max a b a b max max c max c max a max max b max b max max c max c 5 4switch语句 一般形式 switch 表达式 case常量表达式1 语句序列1 break case常量表达式2 语句序列2 break case常量表达式n 语句序列n break default 语句序列n 1 default 缺省 执行过程 例 chargrade switch grade case A printf 85 100 case B printf 70 84 case C printf 60 69 case D printf 60 default printf error 若grede A 输出结果是什么 85 10070 8460 69 60error 用break语句处理后的程序段 switch grade case A printf 85 100 break case B printf 70 84 break case C printf 60 69 break case D printf 60 break default printf error 若gread A 输出结果又是什么 85 100 完整程序 main chargrade printf Inputgrade A B C D scanf c 流程图为 grade 输出 85 100 输出 60 输出 60 69 输出 error 输出 70 84 break 中断swich 5 5选择结构程序举例 例 写程序 判断某一年是否闰年 不能被4整除 4k 1 4k 2 4k 3 非润年 能被4整除 但不能被100整除 2004 2008 2012 2016 2020 润年 能被4整除 能被100整除 还能被400整除 400 800 1200 1600 润年 其他 非闰年 100 200 300 500 600 700 900 1000 1100 1300 非润年 编程一 采用复合运算表达式 main intyear leap 0 scanf d 设 leap代表闰年信息 leap 1闰年 leap 0非闰年 算术运算符 关系运算符 逻辑运算符 除 赋值运算符 条件运算符 编程二 采用阶梯if语句 main intyear leap 0 scanf d Year 4 0Year 100 0Year 400 0Leapyearordinaryyear Y Y N N N Y 修改二If T 200 printf Admitted n elseif T 180 M1 60 M2 60 不使用采用复合运算表达式 重写上述程序段 修改一If T 200 printf Admitted n elseif T 180 if M1 60 if M2 60 printf Admitted n elseprintf Notadmitted n elseprintf Notadmitted n elseprintf Notadmitted n 原程序段 If T 180 例5 7已知基本运费 货重 以及路程 s 和折扣的关系标准如下 s 250km没有折扣250 s 500 2折扣500 s 10005 折扣1000 s 20008 折扣2000 s 300010 折扣s 300015 折扣编程序 计算运费f 设基本运费p 货物重量w 距离s和折扣d 则总运费的计算公式为 f p w s 1 d 算法 先按距离的250倍数进行分类 求每类的折扣 再按公式计算 0250500100020003000 s 161412108642 折扣的变化点都是250的倍数 c s 250代表250的倍数 0123456789101112 总运费的计算公式为 f p w s 1 d c 程序为 main intc s floatp w d f scanf f f d 750 s 1000 4case4 1000 s 1250 4case5 1250 s 1500 case6 1500 s 1750 case7 d 8 break 1750 s 2000 8case8 2000 s 2250 8case9 2250 s 2500 case10 2500 s 2750 case11 d 10 break 2750 s 3000 12case12 d 15 break 3000 s 12 f p w s 1 d 100 0 printf freight 15 4f f 运行情况 输入 10 20 300 结果 freight 58800 0000 若用if语句实现上述功能 程序为 main ints floatp w d f scanf f f d 例5 6求ax2 bx c 0方程的解1 a 0 方程不是二次方程2 b2 4ac 0 有两个相等的实根3 b2 4ac 0 有两个不相等的实根4 b2 4ac 0 有两个共轭复根5 如何判断实数为零 或大于零 或小于零 特殊条件的处理 includemain floata b c d disc x1 x2 realpart imapart scanf f f f 有问题吗 elseif disc 1e 6 x1 b sqrt disc 2 a x2 b sqrt disc 2 a 打印实根 略 else realpart b 2 a imagpart sqrt disc 2 a printf hascomplexroots n 打印虚根 略 if fabs a 1e 6 x1 b sqrt disc 2 a x2 b sqrt disc 2 a 打印实根 略 else realpart b 2 a imagpart sqrt disc 2 a printf hascomplexroots n 打印虚根 略 习题5 7给一个不多于5位的正整数 要求 求出它是几位数 按逆序打印出各位数字 例如原数为12345 应输出54321 includemain longintnum intn1 n2 n3 n4 n5 bits scanf ld n5 num 10000 n4 num n5 10000 1000 n3 num n5 10000 n4 1000 100 n2 num n5 10000 n4 1000 n3 100 10 n1 num n5 10000 n4 1000 n3 100 n2 10 switch bits case5 printf Reversebitsis d d d d d n n1 n2 n3 n4 n5 break case4 printf Reversebitsis d d d d n n1 n2 n3 n4 break case3 printf Reversebitsis d d d n n1 n2 n3 break case2 printf Reversebitsis d d n n1 n2 break case1 printf Reversebitsis d n n1 includemain longintnum intn1 n2 n3 n4 n5 n 5 bits 5 flag 0 scanf ld switch bits 要牢记 不要在关系运算符 的两个符号之间插入空格 注意 与 运算 和 或 运算 都是由两个相同的符号组成 注意不要将等号运算符用于实型数 它们很少能精确地相等 语句标号 case常量表达式 应该是一个整型常量表达式 不得对switch语句的两个语句标号使用相同的常量 本章作业 5 1有如下函数 写一程序 输入x 计算y值 并输出x和对应的y值 设x 1 5 0 5 0 5 1 5 5 2输入3个不相等的实数 要求按由大到小的顺序输出 5 3有4个窟窿 圆心分别为 3 2 3 2 3 2 3 2 圆半径均为1m 4个窟窿的深度均为5m 4个窟窿以外无建筑物 在x 4 4 y 3 3 的范围输入若干点的坐标 求该点的高度 窟窿以外地面的高度为0 窟窿内的地面高度为 5m 以测试程序 打印出x y z的值 提示 可以写为pow x 3 2 pow y 2 2 pow 幂底 幂次 为C的标准函数 需要在主函数前使用 include 5 4一家时装屋贴出了如下的季节性打折通知 写一个程序 计算并打印出打折前后顾客购买该商品花费的比较 分别给出几种小于500元的商品价格进行测试 可以使用以下语句标识顾客所购的是成衣还是手工艺品 intkey printf Theclothtypewhichcustmeristopurchaseis n printf 1 Millcloth n printf 2 Handloomitems n scanf d 以下各题自己对答案 有问题咨询老师5 5判断对错 如果格式说明符的长度比实际数值的长度大 该数值将被右对齐打印 格式说明 5s只会给出要打印字符串的头五个字符 表达式 xy意义相同 在进行表达式混合运算时 隐形转换是自动进行的 用于从键盘接受一个字符的标准C函数是getchar scanf函数不能用于从键盘读入单个字符 printf语句中的打印表列 变量表列 可以包含函数调用 对于嵌套的if语句 最后的else与距离最近的且没有与其它else匹配的if配对 switch语句总是可以用一系列if else语句取代 一个if可以与多个else匹配 swich语句中 任何case分支只能有一条可执行语句 5 6填空 格式说明 用于整形数的读和写 printf 2d c 4 2f 1234 x 1 234 的输出是 假设intcount 1275 floatprice 235 74 printf 2d n f count price 的输出是 printf 8 4s Cambridge 的输出是 必须当两个操作数均为 真 时 关系运算符 的运算结果为 真 当程序在switch语句中遇到 时 会立刻从该结构中退出 为使数据左对齐打印 必须在格式说明中使用符号 x y 可以用 代替 使用 的条件表达式在用于 语句时 会使得编程简单 5 7找出下列程序段中的错误 如果有的话 a If x y z 5 8对于下列程序段 当假设 a n 1 b n 0时 x和y的值是多少 x 1 y 1 If n 0 x x 1 y y 1 printf d d x y 5 9不使用逻辑运算符 重写下列程序段 a if grade 50 second second 1 b if number 100 number 0 printf Outofrange elsesum sum number 5 10简化下列复合逻辑表达式 a x5 d x 5 y 10 z 5 5 11假设x 10 说明下列逻辑表达式为 真 还是为 假 x 10 x 10 xx 10 x 10 xx 10 x 10 xx 10 x 10 x 5 12找出下列switch语句中的错误 如果有的话 假设 intx 1 y 2 switch y case10 switch x y switch x case2 y x y break 5 5判断对错 TrueFalseTrueTrueTrueFalseTrueTrueTrueFalseFalse d 或 i1234x1 231275235 740000Camb break x yifelse 5 6填空 答案 a If x y z 5 7改错 5 8 n 1x 2 y 0n 0 x 1 y 0 a if grade 50 if grade100 printf Outofrange elsesum sum number 5 9 5 11 FalseTrueFalseTrue 5 12 switch y case10 Rightswitch x case2 y x y break a x 10 b x10 y 0 y 5 z 0 c x yz z5 y10 z 5 5 10
展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


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


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

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


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