7.c-chap4 程序控制_第1页
7.c-chap4 程序控制_第2页
7.c-chap4 程序控制_第3页
7.c-chap4 程序控制_第4页
7.c-chap4 程序控制_第5页
已阅读5页,还剩40页未读 继续免费阅读

下载本文档

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

文档简介

1 2 提纲 4 1switch多路选择结构4 2循环的本质4 3计数器控制的循环4 4for循环结构4 5break和continue语句4 6逻辑运算符4 7相等测试运算符 和赋值运算符 4 8结构化程序设计小结 3 if语句有单分支和双分支结构考虑下面要求 变量day取值为0 6 0代表周日 1 6代表周一到周六 输出要求 当day 0时输出 Sunday day 1时输出 Monday 这种多分支的选择结构可以使用switch语句来实现 4 1switch多路选择结构 if day 0 printf Sunday n elseif day 1 printf Monday n elseif day 2 printf Tuesday n elseif day 3 printf Wednesday n elseif day 4 printf Thursday n elseif day 5 printf Friday n elseif day 6 printf Saturday n elseprintf Invalidday n 4 1 switch语句的一般形式switch 表达式 case常量表达式1 语句组 break case常量表达式2 语句组 break case常量表达式 语句组 break default 语句组 break 4 1switch多路选择结构 5 1 计算switch后面 表达式 的值 当其与某个case后面的 常量表达式 的值相同时 就执行该case后面的语句 组 当执行到break语句时 跳出switch语句 转向执行switch语句后的下一条语句 2 如果没有任何一个case后面的 常量表达式 的值与 表达式 的值匹配 则执行default后面的语句 组 然后 再执行switch语句后的下一条语句 4 1switch多路选择结构 6 includemain intday scanf d case后面的表达式必须是常量表达式 不能是变量 而且应该是运算结果为整型 字符型或枚举型 以后会讲 的常量表达式 同样 switch后面的表达式结果也应该是整型 字符型或枚举型的 注意 不能是浮点型 2 每个case后面 常量表达式 的值 必须各不相同 否则会出现互相矛盾的现象 3 每个case后可以有多条语句 不用大括号括起来 4 各case及default子句的先后次序 不影响程序执行结果 5 在switch结构中最好提供一条default语句 用于集中处理例外情况 且放在最后 6 break语句不是必须的 可以根据实际需要决定是否要有break语句 7 4 1switch多路选择结构 main intday scanf d 当输入为6时 输出为 SaturdayInvalidday 当输入为7时 输出为 Invalidday case后面的常量表达式仅起语句标号作用 并不进行条件判断 系统一旦找到入口标号 就从此标号开始执行 不再进行标号判断 直到遇到break 或者到switch语句结束 不要忘记break 除非你真的是不需要 8 4 1switch多路选择结构 多个case子句 可共用同一语句 组 表示这些条件有同一组操作 switch grade case A case a printf 85 100 n break case B case b printf 70 84 n break case C case c printf 60 69 n break case D case d printf below60 n break default printf inputerror n 9 while grade getchar EOF CTRL Z组合键表示EOF 值为 1 switch grade case A case a 成绩为 A 或 a aCount break case B case b 成绩为 B 或 b bCount break case C case c 成绩为 C 或 c cCount break case n case 输入为空格或换行 break default printf Incorrectlettergradeentered printf Entereanewgrade n switch while 节选教材86页例题 1 getchar 从键盘读取一个字符 2 case A case a aCount break 相当于case A case a aCount break 10 4 1switch多路选择结构 练习 输入年份和月份 输出该年截至该月共有多少天 要求在判断某个月有多少天时用switch语句 闰年的判断条件 year能被4整除但不能被100整除 或者能被400整除 11 提纲 4 1switch多路选择结构4 2循环的本质4 3计数器控制的循环4 4for循环结构4 5break和continue语句 链接 4 6逻辑运算符4 7相等测试运算符 和赋值运算符 4 8结构化程序设计小结 12 循环 在循环条件为真时反复执行的一组指令 循环分成两类 1 计数器控制的循环 2 标记控制的循环 4 2循环的本质 13 4 2循环的本质 一 计数器控制的循环事先知道循环次数 又称 定数循环 用控制变量来计算循环的次数 控制变量的值在每次执行完一组循环指令后递增 或递减 当控制变量的值达到预定的循环次数时 循环终止并继续执行循环结构后面的语句 14 4 2循环的本质 二 标记控制的循环事先不知道循环次数 又称 不定数循环 标记值表示获取数据的结束 标记值是在所有合法数据项都提供给程序后键入的值 必须不同于正常的数据项 15 提纲 4 1switch多路选择结构4 2循环的本质4 3计数器控制的循环4 4for循环结构4 5break和continue语句4 6逻辑运算符4 7相等测试运算符 和赋值运算符 4 8结构化程序设计小结 16 计数控制的循环要有 1 控制变量 即循环计数器 2 控制变量的初始值 3 在每次循环中用来修改控制变量的递增 或递减 值 4 测试控制变量最终值的条件 4 3计数器控制的循环 17 提纲 4 1switch多路选择结构4 2循环的本质4 3计数器控制的循环4 4for循环结构4 5break和continue语句4 6逻辑运算符4 7相等测试运算符 和赋值运算符 4 8结构化程序设计小结 18 使用for结构的计数器控制的循环 main intcounter 控制变量的初始化 循环条件 循环计数器 值的递增 递减 都包含在for结构的头部 for counter 1 counter 10 counter printf d n counter 4 4for循环结构 for循环指定了计数循环所需的每一方面的内容 19 for语句的一般格式 表达式1 初始化循环控制变量表达式2 循环条件表达式3 递增 递减 循环控制变量的值 4 4for循环结构 for 表达式1 表达式2 表达式3 例外情况 当for循环体中有continue语句时 以后会讲 20 4 4for循环结构 表达式1和表达式3可以是用逗号格开的表达式列表 如 for i 1 j 50 i 20 i j 5 在for结构中 表达式1和表达式3部分应该只放置包含控制变量的表达式 对其他变量的操作应该放在循环体之前或循环体之后 循环控制条件要防止 丢一错误 尽量用 而不用 如counter 10 而不写成counter 11 for结构中的三个表达式是可有可无的 如果在程序的其他地方初始化了控制变量 则可以省去表达式1 如果省略了表达式2 则假定条件为真 建立了一个 无限循环 如果在for结构体中计算了递增 递减 表达式或者不需要递增 递减 表达式 则可以省去表达式3 for 表达式1 表达式2 表达式3 21 4 4for循环结构 应用举例 Fibonacci数列示例 1 1 2 3 5 8 13 21 34 22 算法1 每循环一次 求得一个值 求Fibonacci数列 23 求Fibonacci数列 算法2 每循环一次 求得两个值 且比算法一少用了一个变量 24 includemain longintf1 f2 定义数列的头2个数 inti 定义循环控制变量i f1 1 f2 1 for i 1 i 20 i 1组2个 20组40个数 printf 15ld 15ld f1 f2 输出当前的2个数 if i 2 0 printf n 输出2次 4个数 换行 f1 f2 计算下2个数 f2 f1 求Fibonacci数列 算法2 的源程序 25 提纲 4 1switch多路选择结构4 2循环的本质4 3计数器控制的循环4 4for循环结构4 5break和continue语句4 6逻辑运算符4 7相等测试运算符 和赋值运算符 4 8结构化程序设计小结 26 为了使循环控制更加灵活 语言提供了break语句和continue语句 1 一般格式 break continue 2 功能 1 break 强行结束循环 转向执行循环语句的下一条语句 用于switch语句和循环语句中 2 continue 用于循环语句中 对于for循环 跳过循环体其余语句 转向循环变量增量表达式3的计算 对于while和do while循环 跳过循环体其余语句 转向继续循环条件的判定 4 5break和continue语句 27 includemain intx 1 while x 10 if x 5 break printf d x x printf nBrokeoutofloopatx d x system pause return0 在while结构中使用break语句 4 5break和continue语句 强行结束循环 转向执行循环语句的下一条语句 28 includemain intx for x 1 x 10 x if x 5 break printf d x printf nBrokeoutofloopatx d x system pause return0 在for结构中使用break语句 4 5break和continue语句 29 includemain intx 1 while x 10 if x 5 continue printf d x x printf nBrokeoutofloopatx d x system pause return0 在while结构中使用continue语句 4 5break和continue语句 跳过循环体其余语句 转向继续循环条件的判定 30 4 5break和continue语句 includemain intx for x 1 x 10 x if x 5 continue printf d x system pause return0 在for结构中使用continue语句 跳过循环体其余语句 转向循环变量增量表达式3的计算 31 当for循环中有continue语句时 includemain intx for x 1 x 10 x if x 5 continue printf d x system pause main intx x 1 while x 10 if x 5 x 不可少 continue printf d i x 32 4 5break和continue语句 includemain intx y for x 1 x 2 x for y 1 y 10 y if y 5 break printf x 2d y 2d n x y system pause return0 循环嵌套时 break和continue只影响包含它们的最内层循环 与外层循环无关 33 与全部使用标准控制流程编写的程序相比 使用break和continue语句的结构较差 34 提纲 4 1switch多路选择结构4 2循环的本质4 3计数器控制的循环4 4for循环结构4 5break和continue语句4 6逻辑运算符4 7相等测试运算符 和赋值运算符 4 8结构化程序设计小结 35 逻辑运算符 将简单条件组合成复杂条件 包含 的表达式如果已经知道结果为假 包含 的表达式如果已经知道结果为真就会停止进一步计算 所以在包含 的表达式中 把最可能为假的条件放在最左边 在包含 的表达式中 把最可能为真的条件放在最左边 这样可以减少程序执行的时间 4 6逻辑运算符 36 4 6逻辑运算符 例 假设a 1 b 2 c 3 d 4 m 1 n 1 经过下列逻辑表达式计算后 m和n的值各是多少 m a b n c d a b的结果为0 所以m的值为0 上述逻辑与表达式的结果为0 不用计算n c d n的值没有发生变化 为1 37 提纲 4 1switch多路选择结构4 2循环的本质4 3计数器控制的循环4 4for循环结构4 5break和continue语句4 6逻辑运算符4 7相等测试运算符 和赋值运算符 4 8结构化程序设计小结 38 1 将相等测试运算符错写成赋值运算符if paycode 4 printf yougetabonus 错写成if paycode 4 printf yougetabonus C语言中 任何非0值都被解释为真 避免方式 将常量放在运算符的左边 变

温馨提示

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

评论

0/150

提交评论