已阅读5页,还剩32页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第4章选择结构程序设计 北京科技大学计算机系 C语言程序设计 202020 1 27 2 提出问题 自然语言 如果 则 否则 C语言 分支语句 问题1 如何根据收入 确定他的纳税比例及纳税额 问题2如何根据学生的分数判断是否及格 202020 1 27 3 本章主要内容 4 1if语句4 1 1if语句的一般形式4 1 2if语句的嵌套4 2switch语句4 2 1switch语句的一般形式4 2 2break语句4 3选择结构程序设计举例 202020 1 27 4 简单分支语句 语句一般格式if 表达式 语句 功能 计算表达式的值 如果是一个非0值 即逻辑真 就执行内嵌语句 否则 即逻辑假 跳过内嵌语句 顺序执行后续语句 202020 1 27 5 简单分支语句的算法 例如 if x 0 m if a b c a a b b c 202020 1 27 6 双重分支语句 语句一般格式if 表达式 语句1else语句2功能 计算表达式的值 如果它的值是一个非0值 逻辑真 就执行内嵌语句1 之后跳过内嵌语句2 执行后续语句 否则跳过内嵌语句1 执行内嵌语句2 之后执行后续语句 202020 1 27 7 双重分支语句的算法 例如 if x 0 m elsem if ch a 202020 1 27 8 多重分支语句 语句一般格式if 表达式1 语句1elseif 表达式2 语句2 elseif 表达式m 语句melse语句n功能 依次计算并判断表达式i 为非0时执行后面的语句 都为0时 执行语句n无论执行完哪个语句分支 都转到后续语句 202020 1 27 9 多重分支语句的算法 流程图 表达式m 202020 1 27 10 多重分支语句的算法 N S结构图 例如 if a 0 x 1 elseif a 0 x 0 elsex 1 202020 1 27 11 if语句的简单应用 例4 1 输入一个字符 如果是大写字母 则将其转换为小写字母输出 否则直接输出 输入 用getchar或scnaf函数ch是否为大写字母 ch A ch 65 ch 90 大写字母转换为小写字母 ch ch 32输出 用putchar或printf函数 思路 202020 1 27 12 程序 include stdio h main charch ch getchar if ch A 程序运行情况如下 G g 运行jc4 1 可使用条件表达式代替 putchar ch A putchar n 202020 1 27 13 4 1 2if语句的嵌套 如果if的内嵌语句中又使用了一个if语句 则构成if语句的嵌套 例4 a 比较两个整数的关系 includemain intx y printf EnterintegerXandY scanf d d 应该正确判断 if的内嵌语句if和else的配对 运行jc4 a if x y if x y printf X Y n elseprintf X Y n elseprintf X Y n 提倡缩格书写有利于阅读程序 202020 1 27 14 双重 或多重 分支if语句的嵌套形式if 表达式 if语句elseif语句 if语句嵌套的形式 简单if语句的嵌套形式if 表达式 if语句 可以是各种形式的if语句 可以是各种形式的if语句 如果是简单if语句 必须用 括起 202020 1 27 15 if c 50 printf 50150 n if c 50 printf 50 c 100 n elseprintf c 50 n 例如 if c 50 printf 50 c 100 n 与哪个if配对 匹配规则 在嵌套的if else语句中 else总是与上面的 离它最近的 在同一复合语句中还没有配对的if配对 elseprintf c 50 n 202020 1 27 16 if a b if a c if a d flag 1 elseflag 2 elseflag 3 if a b if a c if a d flag 1 elseflag 2 elseflag 3 flag 3的条件 flag 3的条件 当c a b时 当a b时 例如 202020 1 27 17 举例 例4 4 输入一个数 判断它是奇数还是偶数 如果是奇数则进一步判断它是否为5的倍数 x 2 0 x 5等于0 202020 1 27 18 程序 main intx scanf d 等价于if x 2 等价于if x 5 运行jc4 4 202020 1 27 19 学习if语句的难点 正确用表达式描述条件例如 当x大于5小于10时令x自增if 5 x 10 x if else语句的配对正确判断内嵌语句例如 if x y x x 3 y y 2 elsex x 3 y y 2 if x 5 202020 1 27 20 熟悉常用的if表达式形式 例如有定义 inta b 0 a等于什么值时 执行b 2 语句 if a 0 b 2 if a 1 b 2 if a 0 b 2 if a 1 b 2 if a 0 b 2 if a b 2 if a b 2 等价于if a 0 b 2 等价于if a 0 b 2 202020 1 27 21 4 2switch语句 switch语句的一般形式switch 表达式 case常量表达式1 语句序列1case常量表达式2 语句序列2 case常量表达式n 语句序列ndefault 语句序列n 1 功能 计算表达式的值 与常量表达式的值比较 等于第i个值时 顺序执行语句序列i i 1 n 1若与所有常量表达式值都不相等 执行语句序列n 1 202020 1 27 22 switch语句的算法描述 例如 switch a case5 printf 当a等于5 输出 当a等于2 输出 当a是其他值 输出 202020 1 27 23 说明 case常量表达式i 等价于语句标号 计算出的表达式值等于哪个语句标号 就从哪个位置开始顺序向下执行语句序列 语句位置影响运行结果 例如 switch a case2 printf default printf case5 printf 当a等于2 输出 当a是其他值 输出 当a等于5 输出 switch与break语句结合才能实现程序的分支 break break 当a等于2 输出 当a等于5 输出 当a是其他值 输出 202020 1 27 24 switch语句的简单应用 例4 3 已知x 100 y 15 要求输入一个算术运算符 或 并对x和y进行指定的算术运算 思路 设x和y为float型变量并赋初值 输入的运算符op为char型变量 根据op的值 为 进行x和y的相加 相减 相乘 相除运算 选择分支 还要考虑到输入字符不是 或 时的情况 202020 1 27 25 程序 include stdio h main floatx 100 y 15 z charop op getchar switch op case z x y break case z x y break case z x y break case z x y break default z 0 if int z 0 printf f c f f n x op y z elseprintf cisnotanoperator n op 运行jc4 3 实型数通常不使用z 0或z 0的比较可用if int z 代替 202020 1 27 26 注意 switch语句的书写格式 语句体本身必须用花括号括起 case和default后面如果有多条语句 则不必加花括号 case和常量表达式之间必须有空格 default可以写在语句体的任何位置 也可以省略 break语句可以改变case的语句标号作用 终止后续case语句序列的执行 switch语句和break语句结合 可以实现程序的选择控制 允许switch嵌套使用 但同一个switch语句中 任意两个case的常量表达式值不能相同 202020 1 27 27 4 3选择结构程序设计举例 例4 6 求一元二次方程ax2 bx c 0的根 思路 一元二次方程的根取决于系数a b c求根公式 判别式d b2 4ac当d 0时 方程有两个相等的实根 x1 x2 b 2 a 当d 0时 方程有两个不相等的实根 x1 b sqrt d 2 a x2 b sqrt d 2 a 当d 0时 方程有两个虚根 x1 jp ipix2 jp ipi 实部jp b 2 a 虚部ip sqrt d 2 a 202020 1 27 28 算法 202020 1 27 29 程序 include math h main floata b c d x1 x2 lp ip scanf f f f 202020 1 27 30 程序 续 elseif d 1e 6 不相等的实根 x1 b sqrt d 2 a x2 b sqrt d 2 a printf hastworealroots n printf x1 8 4f 2 8 4f n x1 x2 else 虚根 lp b 2 a ip sqrt d 2 a printf hastwocomplexroots n printf x1 8 4f 8 4fi n lp ip printf x2 8 4f 8 4fi n lp ip 运行jc4 6 202020 1 27 31 举例 续 例4 b 输入年份 判别该年是否为闰年 思路 年份year为闰年的条件为 能够被4整除 但不能被100整除的年份 能够被400整除的年份 只要满足任意一个就可以确定它是闰年 例如 1996年 2000年是闰年1998年 1900年不是闰年 设定标志变量leap 只要符合其中一个条件的就是闰年 令leap 1 否则令leap 0 202020 1 27 32 算法 year 4 0 year 100 0 202020 1 27 33 程序 main intyear leap scanf d 运行jc4 b 202020 1 27 34 举例 续 例4 C 已知银行整存整取存款月息利率分别为 0 225 期限一年0 292 期限三年0 315 期限五年0 408 期限八年0 192其他 视为活期 输入存款金额和期限 求到期时利息与本金合计 可以用if语句或switch语句实现 银行到期利息计算公式 利息 本金 月息利率 12 存款年限程序中应当根据存款的年限 多种 确定利率 202020 1 27 35 程序 main floatmoney rate total year printf Inputmoneyandyear scanf f f 运行jc4 c 问题 是否允许year为float型 当存款期限为2年 4年 等如何处理 20202
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 少儿感统触觉刺激训练合同
- 上班族减脂餐包月上门配送合同协议
- PDCA优化STEMI急诊流程
- 2025年云南玉溪红塔区聂耳文化演艺有限公司招聘真题
- 禹城社区工作者招考真题及答案2025
- 2025年青山湖区住房和城乡建设局下属事业单位招聘真题
- 2025年毕节市威宁自治县发展和改革局招聘城镇公益性岗位人员真题
- 2026年常州市法院书记员招聘考试备考试题及答案详解
- 2026年度春季丹巴县美学文化传媒有限公司招聘5人考试备考试题及答案解析
- 2026贵州瓮安县县级公立医院招聘编制外专业技术人员88人考试模拟试题及答案解析
- 2024-2030年中国低膨胀合金市场产销需求与竞争前景分析研究报告
- 药物警戒管理体系记录与数据管理规程
- 中国法律史-第一次平时作业-国开-参考资料
- 高中物理选择性必修1教材习题答案
- 《微生物病原体课件》
- 重庆市渝中区2022-2023学年四年级下学期期末数学试卷
- 铁路救援起复索具使用指南
- 实验五-眼图仿真实验课件
- DB37T 1933-2022氯碱安全生产技术规范
- GB/T 24923-2010普通型阀门电动装置技术条件
- GB/T 20319-2017风力发电机组验收规范
评论
0/150
提交评论