已阅读5页,还剩40页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第三章基本控制结构 if语句switch语句while语句do while语句for语句循环不变式 3 1程序的基本控制结构3 1 1c 语言的简单语句 单语句 以分号 结束inta 变量定义语句a 3 2 表达式语句function example 函数调用语句空语句 只有一个分号 复合语句 块语句 用花括号 括起来的若干条语句 可以是单语句 空语句 其他块语句 块语句在语法上等价于一个单语句 所以在单语句可用的地方我们也可以使用块语句 块语句中每一个语句都以分号 结束 块语句本身则以右花括号 结束 if a b intt a a b b t 3 1 1c 语言的简单语句 3 1 2单入口 单出口控制结构 实现单入口 单出口程序只需三种基本的控制结构顺序结构选择结构当条件p 条件表达式 成立 则执行一个分支 否则执行另一个分支多路分支循环结构实现反复执行某一部分的操作循环结构三要素 循环条件p循环体a循环变量 在每次循环中都必须有语句修改此变量的值 以使循环条件表达式的值可能改变 从而跳出循环 3 1 3结构化程序设计工具 程序框图结构化程序设计图形工具n s图pad图jackson结构图warnier图pdl programdesignlanguage 3 2选择结构 3 2 1if语句if 条件表达式 子语句 if语句的有效范围是单个语句 如果子语句有多个语句 则必须用 括起来 成为一个复合语句if 条件表达式 子语句1 else子语句2 例3 2 1 输入24小时制的时间 转换并输出12小时制的时间并注明是上午还是下午 上午用a m表示 下午用p m表示 includemain inthour charnoon a cout hour if hour 12 hour hour 12 noon p cout thehouris hour noon m n 如果去掉花括号if hour 12 hour hour 12 noon p noon p 不是if的子语句 而是主流程if语句的下一个顺序语句 程序2 程序3 includevoidmain floatx cout x if x 12 cout p m x x 12 elsecout a m cout x n 改进 includevoidmain floatx cout x if x 12 cout a m else cout p m x x 12 cout x n 注意书写层次结构 例3 2 2 一个具有输入合法性检测的程序 要求用户输入的工龄在0 47之间 如果超出此范围则提示输入错误 否则才接受用户输入 用户输入错误时 程序用转义字符输出一声响铃 main intstanding 用户输入的工龄floatstanding salary 根据用户输入工龄计算出来的工龄工资cout standing if standing 0 嵌套if语句 if 表达式1 if 表达式2 子语句1 else子语句2 else子语句3 if 表达式1 子语句1 elseif 表达式2 子语句2 elseif 表达式n 子语句n else子语句n 1 例3 2 3 从键盘上输入3个数a b c 求出三数中最大者并输出 includevoidmain inta b c max cout a b c max a if b max max b 求出a b中的较 大值 记录在max中 然后再比较c与maxif c max max c cout max a b c max n 采用嵌套if语句来实现 if a b if a c coutc cout maximumis b elsecout maximumis c 垂悬else问题 if p1 if p2 a 1 elsea 2 这样的语句会引起二义性 else子句不知道应该与哪个if语句配对 c 语言中是就近配对 if p1 注意if与else的配if p2 a 1 对关系 else总是elsea 2 与它上面的最近的 if配对 注意问题 if语句中的表达式 一般为逻辑表达式或关系表达式else子句不能单独使用 必须与if配套使用if以及else语句后面都只含一个内嵌的操作语句 有效范围都只有一个语句 若需含多个操作 则须用 括起来 例 if a b c coutc c a b elsecout a b c 程序3 2 4 程序 average cpp 功能 求数 理 化三科平均成绩的总评 演示if语句嵌套的缩进格式 includevoidmain intmath phys chem intaverage floatscholarship cout math phys chem average math phys chem 3 0 0 5 why if average 90 cout 80 cout good n scholarship 85 00 程序3 2 4 elseif average 70 cout 60 cout pass n scholarship 45 50 else cout fail n scholarship 0 00 cout yourscholarshipis scholarship n 条件表达式短路求值 if members 0 income members 800 00 if members 0 if income members 800 00 expression1 expression2 expression1为0 expression2不做expression1 expression2 expression1非0 expression2不做 3 2 2switch语句 多分支选择语句switch语句的一般形式如下 switch 表达式 case常量表达式1 语句序列1 break case常量表达式2 语句序列2 break case常量表达式n 语句序列n break default 语句序列n 1 break 说明 表达式可为任何类型 switch在入口时判断表达式与哪个常量表达式匹配 若表达式的值与某个case后面的常量相等 则执行与该case后面相应的语句 若与所有列出的常量都不相等 则执行default后面的语句 case后只能是常量表达式 不能是变量表达式 其值只能是整型 字符型 枚举型 不能是其他类型 每个常量表达式的值都不相同 case部分与default部分出现次序不影响执行结果 每部分不限单个语句 可写多个语句 不用加 break 语句用于执行完一个分支后跳出此switch语句 例3 2 6 includemain intchoice 用户输入的选择cout choice 用户输入选择switch choice 对用户的选择分别作处理case1 cout yourchoiceisapple n case2 cout yourchoiceispear n case3 cout yourchoiceisbanana n case4 cout yourchoiceisorange n default cout youdidnotmakeachoice n break break break break break 例3 2 7 程序 orders cpp 功能 旅行社订票折扣率计算 includevoidmain intorders fragment floatdiscount cout orders fragment orders 10 switch fragment case0 discount 0 10 break case1 discount 0 15 break case2 discount 0 30 break default discount 0 45 break cout thediscountis discount 100 n 3 3循环结构3 3 1while语句 while 循环条件表达式 循环体语句 当表达式的值为t 非零 时 循环条件成立 执行循环体语句 while语句的作用范围只到while后第一个分号 单语句 若循环体有多个语句则需用 括起来 在循环体中应有使循环趋向于结束的语句循环变量初始化需在while语句前完成 例3 3 1 给定一个正整数n 求出平方值不超过n的最大正整数并输出 程序流程图如右 源程序 includemain intn 用户给定的正整数intmax 所求的最大整数cout n 判断用户输入是否合法if n 0 cout inputerror n else 利用循环求出平方大于n的最小整数max 1 while max max n max max 1 输出结果cout themaximumintegeris max 1 n 例3 3 2 includevoidmain intchoice 1 用户输入的选择while choice 0 cout choice 用户输入选择switch choice 对用户的选择分别作处理case0 break case1 cout yourchoiceisapple n break case2 cout yourchoiceispear n break case3 cout yourchoiceisbanana n break case4 cout yourchoiceisorange n break default cout yourchoiceisinvalid n break cout thankyouforyourchoice n 3 3 2do while语句 do循环体语句 while 循环条件表达式p 先执行一次循环体语句 然后判别表达式 当为t时 返回执行循环体语句 直到表达式为f 结束循环while语句和do while语句基本等价 只有当表达式一开始就为假时 两种语句结果不一样i 20 sum 0 i 20 sum 0 while i 10 do sum i sum i i i while i 10 结果sum 0结果sum 20 3 3 2do while语句 程序 sqrt cpp 功能 利用牛顿法求一个正数的平方根 includevoidmain constfloateps 1e 5 floatnum root pre cout num if numeps root pre eps cout therootof num is root endl 3 3 3for语句 for 表达式1 表达式2 表达式3 循环体语句 执行过程 求解表达式1求解表达式2 若其值为t 执行循环体语句 跳到第3 步 若为f 结束循环 跳到第4 步求解表达式3 然后跳到第2 步循环结束 执行for语句的下一条语句适用于循环次数已知的循环表达式1 循环变量赋初值表达式2 循环条件表达式3 循环变量增量 计数表达式 for语句中的三个表达式中任一个或全部均可省略 但分号必须保留 sum 0 for i 1 i100 break sum i sum 0 for i 1 i 100 sum i i sum 0 i 1 for i100 break sum i i for sum 0 i 1 i 100 i sum i while i 100 while 1 程序3 3 4 程序 alphabet cpp 功能 正反向打印字母表 includevoidmain charch for ch a ch a ch cout ch cout endl 程序3 3 5 程序 temptab cpp 功能 打印摄氏温度与华氏温度对照表 includevoidmain constintmax 10 constintmin 5 intcel floatfah 输出对照表栏目cout min cel fah cel 1 8 32 cout cel x09 fah endl 3 3 4循环的嵌套 三种循环可以相互替代一个循环体内又包含另一个完整的循环结构 循环的嵌套各种循环可以相互嵌套 3 3 4循环的嵌套 程序 multitab cpp 功能 打印乘法口诀表 includevoidmain inti j for i 1 i 9 i for j 1 j i j cout i j i j cout endl 程序3 3 6公鸡5元1只 母鸡3元1只 小鸡1元3只 花了100元钱买100只鸡 问公鸡 母鸡 小鸡各多少只 cock公鸡的个数 hen母鸡的个数 chicken小鸡的个数 得方程 cock hen chicken 1005 cock 3 hen chicken 3 100 includevoidmain intcock hen chicken for cock 0 cock 100 5 cock for hen 0 hen 100 3 hen chicken 100 cock hen if chicken 3 0 运行结果 cock 0hen 25chicken 75cock 4hen 18chicken 78cock 8hen 11chicken 81cock 12hen 4chicken 84 20 33 3 3 5设计正确的循环 循环不变式一个或者多个表达式用于保证循环的正确性在循环前成立在每次执行循环体后仍成立在循环结束后也成立 3 4转向语句 例3 4 1 break的用法 键盘输入m和n 10 m n 32000 求出m n间所有素数且按每行8个数形式输出 include include includevoidmain intm n x k i j j 0 j计算输出个数do cout m n while m n n 32000 cout n n for x m x k 1 不是用break跳出的 找到一个素数if j 8 0 cout endl 每行8个数cout setw 8 x j j 1 以每行8个数的形式输出 每个数占8个字符的位置 cout n n 例3 4 2 continue的用法 在键盘上输入若干个正数 累加求和 最后输出累加和以及平均值 问题分析 事先不知道要输入多少个数 但知道输入数是正数 我们可边输入边统计其个数 若发现输入的是0或负数时 输入结束 当输入数是大于0时则累加并累计数的个数 源程序如下 includevoidmain doublesum num intn sum 0 0 n
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026年岗位考证培训劳务员考试(基础知识)仿真试题(含答案)
- 2026年焊接操作安全模拟试题(含答案)
- 2026年机械专业单招模拟试题(含答案)
- 2026年职业助理医师模拟试题带答案
- 2026年抗结核药模拟试题及参考答案
- 2026年辐射防护模拟试卷带答案
- 2026年旅游建筑文化模拟试题及参考答案
- 2026年检验诊断专业模拟试题及参考答案
- 2026年农林规划设计师职业能力测验模拟试题及参考答案
- 2026年雪地驾车模拟试卷及答案
- 辐射安全考试题及答案库核子仪
- 新版《检验检测机构资质认定评审准则》(2023版)内部审核检查表示例
- DB45-T 2528-2022内养生水泥混凝土技术规程
- 2025安徽星瑞齿轮传动有限公司招聘2人笔试历年参考题库附带答案详解
- 整本书阅读《平凡的世界》课件
- 精密与特种加工技术(第3版) 课件全套 第1-10章 绪论 - MEMS及纳米加工技术
- 保龄球大战大班健康活动
- 岗位安全风险辨识课件
- 市政工程设施养护维修估算指标
- 比亚迪esg研究报告
- 职业规划人物访谈采访问题三十条
评论
0/150
提交评论