




已阅读5页,还剩31页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第四章流程控制 4 1分支语句4 2循环语句4 3其它语句4 4本章要点小结 4 1分支语句 4 1 1if语句的三种形式4 1 2if语句的嵌套4 1 3switch 多分支 语句 4 1 1if语句的三种形式 形式一 if 表达式 语句序列 执行过程 例如 if x y printf d n x printf d n y if a b if 4 5 x a if a b t a a b b t 问题 a b c是否合法 eg401 c 形式二 if 表达式 语句序列1 else语句序列2 执行过程 例如 if a b x a elsex b if x 0 printf 3f n x elseprintf 3f n x 形式三 if 表达式1 语句序列1 elseif 表达式2 语句序列2 elseif 表达式3 语句序列3 elseif 表达式n 语句序列n else语句序列n 1 if x 0 y 1 elseif x 0 y 0 elsey 1 说明 1 表达式一般为关系表达式或逻辑表达式 但在C语言中它也可以是任意的数值表达式 if 3 n 1 if a printf d a if n 3 3 x 1 elsex 1 4 每个语句序列可以是一个语句也可以是若干个语句 但要构成复合语句 3 else只能与if配对使用 仅else本身不能单独作为一个语句使用 if a b t a a b b t if a b c 2 每个语句都要以 结束 分号是语句的一部分 4 1 2if语句的嵌套 形式 if 表达式1 if 表达式2 语句序列2 else语句序列3 elseif 表达式4 语句序列4 else语句序列5 在if语句的原 语句序列 中又包含一个或多个if语句称为if语句的嵌套 当然 语句序列2 3 4 5还可以是if语句 例如 max a b c if a b if a c max a elsemax c elseif b c max b elsemax c 二义性 if 表达式1 if 表达式2 语句序列2 else语句序列3 if 表达式1 if 表达式2 语句序列2 else语句序列3 if 表达式1 if 表达式2 语句序列2 else语句序列3 应如何理解 有两种理解方式 语言规定 else总是与它前面最近的且未曾配对的if配对 if 表达式1 if 表达式2 语句序列2 else语句序列3 if 表达式1 if 表达式2 语句序列2 else语句序列3 4 1 3switch 多分支 语句 1 格式 switch 表达式 case常量表达式1 语句1 break case常量表达式2 语句2 break case常量表达式n 语句n break default 语句n 1 break 2 功能 先计算表达式的值 测试该值是否与某常量表达式的值相同 若有相同者 流程转向其后面的语句执行 若无相同者 再看有没有default部分 若有default 则执行其后面的语句 若无default 则switch语句什么也不做 流程转向其后继语句 3 例 读入1到7之间的某个数 输出一个星期中相应的某一天的单词 eg404 c 4 说明 switch语句的执行部分是由若干个case语句和一个可缺省的default语句组成的复合语句 整个语句要用大括号括起来 switch后面括号内的表达式可以是整型也可以是字符型或枚举类型 每个case后的常量表达式只起语句标号的作用 所以当表达式的值与某一个case后的常量表达式的值相等时 就执行相应的语句 它后面若没有break语句 程序就自动地执行下一个case之后的语句 所以每个case之后通常都有一个break 使流程跳出switch语句 各个case的常量表达式的值必须互不相同 各个case和default的出现次序是任意的 出现次序不影响执行结果 一般常量表达式按升序 或降序 排列 并将default放在所有case语句之后 各个case后的语句可以是多个语句 且不用花括号括起来 switch语句允许几种情况执行相同的语句 case6 case7 printf Reset n break 但不能写成 case6 7 printf Reset n break 5 例 输入一个年号year和月号month 计算该月有几天 并输出结果 eg404 c 4 2循环语句 4 2 1while语句4 2 2do while语句4 2 3for语句4 2 4循环嵌套4 2 5几种循环的比较 4 2 1while语句 1 格式 while 表达式 循环体 2 功能 首先计算表达式的值 若表达式成立 非0 执行一遍循环体 再判断表达式 若成立再执行循环体 当表达式不成立 其值为0 时退出循环 跳转到循环体之后的语句执行 eg406 c 3 特点 先判断表达式 然后执行循环体 若表达式一开始就不成立 则循环体一次也不执行 4 注意 1 循环部分为多个语句时 必须用大括号构成复合语句 2 循环体中应有语句修改控制条件 5 例 计算sum 1 2 3 100 4 2 2do while语句 1 格式 do循环体 while 表达式 2 功能 先执行一遍循环体 再判断表达式 当表达式的值为非0 真 时 返回重新执行循环体 如此反复 直到表达式的值为0 假 时退出循环 eg407 c 3 特点 先执行循环体 后判断循环条件 表达式 是否成立 即循环体至少执行一次 4 推荐书写格式 do while 5 例 计算sum 1 2 3 100 对于同一个问题既可以用while语句处理 也可以用do while语句处理 do while语句结构可以转换成while结构 do while语句流程图可以改写为 可见 do while结构是由一个语句加一个while结构构成的 一般情况下 用while语句和do while语句处理同一问题时 若二者的循环体一样 则结果也一样 但是如果while后面的表达式一开始就为假 0 时 两种循环的结果是不同的 例 计算 分别用while和do while实现 结论 当while后面的表达式的第一次的值为 真 时 两种循环的结果相同 否则 二者结果不相同 指二者具有相同的循环体的情况 eg408 c eg409 c 4 2 3for语句 1 格式 for 表达式1 表达式2 表达式3 循环体 其中 表达式1规定循环控制变量的初始值 表达式2指出循环条件表达式 表达式3修改循环变量的值 2 功能 先求解表达式1 给循环控制变量赋初值 求解表达式2 若为真 非0 执行循环体 求解表达式3 它改变了表达式2中的某个变量 返回 直到条件为假 0 退出循环 for语句最易理解的形式 for 循环控制变量赋初值 循环条件 循环变量增值 循环体 3 例 计算sum 1 2 3 100 eg410 c for i 1 i 100 i sum sum i i 1 while i 100 sum sum i i for语句的功能和执行过程与while相似 在上例中 若把给循环控制变量赋初值的工作放在语句之外 把循环变量的修改放在循环体内 则跟while循环相同 所以for语句的一般形式可以用while表示成 表达式1 while 表达式2 语句序列 表达式3 说明 for语句的三个表达式都可以缺省 但两个分号不能缺省 若在for语句之前已经对循环控制变量赋初值 则表达式1可以缺省 例 i 1 for i 100 i sum sum i for i 1 i 100 i sum sum i 通常不缺省表达式2 有时缺省表达式2 即不判断循环条件 循环将无终止的执行 即认为表达式2始终为真 在循环体内用if和break控制循环结束 if 条件 break for i 1 i sum sum i i 1 while 1 sum sum i i 表达式3也可以缺省 但应设法修改循环控制变量 保证程序正常结束 for i 1 i 100 sum sum i i 可以省略表达式1和表达式3 即只给循环条件 如 for i 100 sum sum i i while i 100 sum sum i i 此时 完全等同于while语句 3个表达式都可以省略 如 for 循环体 while 1 循环体 将无终止的执行循环 从语法上讲是正确的 但一般没有实际意义 for语句表达式的计算 for语句中的表达式1和表达式3可以由一个或多个赋值表达式组成 当为多个表达式时 各表达式之间要用逗号运算符 即组成逗号表达式 for sum 0 i 1 i 100 i sum sum i for i 0 j 100 i j i j k i j printf i d j d k d n i j k i j k include stdio h main inta b c for a 0 b 50 a b a b printf a d b d n a b c a b printf a d b d c d n a b c a b c eg411 c for语句中的表达式1和表达式3通常与循环变量有关 但也可以无关 include stdio h main inti sum i 1 for sum 0 i 100 sum sum i i printf sum d n sum i sum for语句中的表达式2通常为关系表达式或逻辑表达式 但也可以是数值或字符表达式 判断时 只要其值非0 就执行循环体 为0则退出循环 for i 0 ch getchar n i ch eg412 c eg413 c 4 2 4循环嵌套 一个循环体内又包含另一个完整的循环结构 称为循环嵌套 内层的循环中还可以嵌套循环 构成多重循环 三种循环可以相互嵌套 while while for for do do while while while for for do while while do while 例 打印一张九九表 for i 1 i 9 i for j 1 j j i printf 4d i j printf n eg414 c 在设计循环嵌套时要注意 应该 在一个循环体内包含另一个完整的循环结构 不论嵌套次数多少 要遵守这个原则 while do for while do for while C语言中的三种循环结构都由表达式控制执行一个循环体 一般情况下可以相互代替 while和do while循环 只在while后面指定循环条件 for循环可以在表达式3中包含使循环趋于结束的操作 用while和do while循环时 循环变量初始化的操作应在while和do while语句之前完成 而for语句可以在表达式1中实现循环变量的初始化 当循环次数及控制条件要在程序运行过程中确定时 选用while和do while语句 在初值 增量及控制条件明显 或循环次数已经给定的情况下 选用for循环 在循环的执行过程中 应不断的改变循环控制表达式的值 以便逐步形成使它为0的条件 否则出现死循环 三种循环可以相互嵌套 形成多重循环 外循环可以包含多个或多重内循环 循环之间可以并列但不能相交 并列的循环控制变量可以同名 但嵌套的循环控制变量不能同名 不允许用其它的控制语句把程序流程从循环体外转入循环体内 但必要时可以用break等语句把流程从循环体内转到循环体外 4 3其它语句 4 3 1break语句4 3 2continue语句4 3 3空语句 1 格式 break 2 功能 在循环体或switch语句中 执行到break语句时 终止当前语句的执行 程序流程转移到当前循环语句或switch语句的后继语句去执行 3 说明 eg416 c 若是多重循环 break只能使流程跳出离break最近的一层 break只用于switch语句和循环语句 4 例 计算r 1到r 10时的圆面积 直到面积大于100为止 4 3 1break语句 1 格式 continue 2 功能 在循环体中 当执行到continue语句时 跳过循环体内位于其后的其它语句 接着进行下一次是否执行循环的判定 即 提前结束本次循环 3 说明 eg417 c continue语句只能用于循环语句中 它是一种具有特殊功能的转移语句 continue与break不同 continue语句只结束本次循环 而不是终止整个循环的执行 而break语句则是结束整个循环 不再判断循环条件是否成立 4 例 把100到200之间能被3整除的数输出 4 3 2continue语句 1 格式 仅由一个分号 组成 2 功能 当从语法上需要一个语句 而从语义上不需要任何操作时 便可以用空语句 3 例如 在循环语句中提供一个不需要执行操作的空语句体 for sum 0 i 1 i 100 sum i i for i 1 i 10000 i 4 3 3空语句 4 注意 要将空语句与简单语句中的有效组成部分相区别 不要乱用空语句 for i 1 i 1
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 成都中职单招考试试题及答案
- 影视行业2025年工业化制作流程质量控制与影视行业市场潜力挖掘报告
- 滴滴人证考试题库及答案
- 安全员日常考及答案
- 2025年新能源行业绿色信贷政策落实现状及改进建议
- 2025年新能源产业国际标准制定对我国风电产业的影响报告
- 成人Still病合并多浆膜腔积液护理查房
- 工业互联网平台射频识别(RFID)技术在智能工厂生产效率提升中的应用报告
- 2025年人工智能在智能家居产品创新设计中的应用与挑战报告
- 2025年垃圾填埋气发电行业碳减排效益与技术创新竞争力评价报告
- 核桃肽粉生产技术规程(征求意见稿)编制说明
- (2025)企业首席质量官培训考核试题(附含答案)
- 农业现代化种植技术培训课件
- 中城汽车(山东)有限公司审计报告
- 锂电池pack工厂安全培训课件
- 2025版煤矿安全规程宣贯培训课件
- DB31∕T 1545-2025 卫生健康数据分类分级要求
- 大学生创新创业基础(创新创业课程)完整全套教学课件
- 《战略的本质》读书分享
- 《城镇燃气室内工程施工与质量验收规范》CJJ94-2009
- 解剖学 双语5课件
评论
0/150
提交评论