已阅读5页,还剩30页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第二章程序的流程控制 2 1选择 分支 结构 2 1 1关系运算符与逻辑运算符C的关系运算符如下 大于 大于等于99返回110 2 10 返回0 2 0算法的表示 2 1算法的概念 算法是对特定问题求解步骤的一种描述 也是解决问题的办法 它是指令的有限序列 其中每一条指令表示一个或多个操作 自然语言流程图N S图伪代码PAD图 2 2算法的表示 2 0算法的表示 2 2算法的表示 流程图 2 0算法的表示 程序的三种基本结构 1 顺序结构 2 2算法的表示 流程图 2 0算法的表示 程序的三种基本结构 2 2算法的表示 流程图 2 选择序结构 2 0算法的表示 程序的三种基本结构 2 2算法的表示 流程图 3 循环序结构 1 当型 while型 循环结构 2 直到型 until型 循环结构 2 0算法的表示 2 1选择 分支 结构 2 1 1关系运算符与逻辑运算符C的逻辑运算符如下 逻辑非 逻辑与 逻辑或例如 1 0先求 1和先求1 0将会等于出不同的结果 那么何者优先呢 这在C中是有规定的 C的部分运算符的优先级如下 表达式 优先级 小括号 数组下标 结构成员 指针型结构成员 最高 逻辑非 位取反 负号 加1 减1 变量地址 指针所指内容 sizeof 长度计算 乘 除 取模 加 减 位右移 大于 大于等于 等于 不等于 位与 位异或 位或 逻辑与 逻辑或 表达式 联合操作 逗号运算符 最低 2 1选择 分支 结构 2 1 2if else结构C中条件语句的一般形式为 if 表达式 语句1 else语句2 上述结构表示 如果表达式的值为非0 true 即真 则执行语句1 执行完语句1从语句2后开始继续向下执行 如果表达式的值为0 false 即假 则跳过语句1而执行语句2 所谓表达式是指关系表达式和逻辑表达式的结合式 注意 1 条件执行语句中 else语句2 部分是选择项 可以缺省 此时条件语句变成 if 表达式 语句1 表示若表达式的值为非0则执行语句1 否则跳过语句1继续执行 2 如果语句1或语句2有多于一条语句要执行时 必须使用 和 把这些语句包括在其中 此时条件语句形式为 if 表达式 语句体1 else 语句体2 2 1选择 分支 结构 2 1 2if else结构注意 if 表达式 语句体1 else 语句体2 3 条件语句可以嵌套 这种情况经常碰到 但条件嵌套语句容易出错 其原因主要是不知道哪个if对应哪个else 例如 if x 20 xx printf Good elseprintf Bad 对于上述情况 C规定 else语句与最近的一个if语句匹配 上例中的else与if yx 相匹配 为了使else与if x 20 x20 xx printf Good elseprintf Bad 2 1选择 分支 结构 2 1 2if else结构例2 1符号函数intmain void floatx inty 1 printf inputx scanf f 2 1选择 分支 结构 2 1 3条件运算符与条件表达式条件表达式 e1 e2 e3例如 a x 0 x x 相当于if x 0 a x elsea x 2 1选择 分支 结构 2 1 2if else结构例2 2数据分段处理 0 49为A段 50 119为B段 120 169为C段intmain void inty charresult printf inputy scanf d 2 1选择 分支 结构 2 1 3switch结构在编写程序时 经常会碰到按不同情况分转的多路问题 这时可用嵌套if else fi语句来实现 但if else if语句使用不方便 并且容易出错 对这种情况 C提供了一个开关语句 开关语句格式为 switch 变量 case常量1 语句1或空 case常量2 语句2或空 case常量n 语句n或空 default 语句n 1或空 2 1选择 分支 结构 执行switch开关语句时 将变量逐个与case后的常量进行比较 若与其中一个相等 则执行该常量下的语句 若不与任何一个常量相等 则执行default后面的语句 注意 1 switch中变量可以是数值 也可以是字符 2 可以省略一些case和default 3 每个case或default后的语句可以是语句体 但不需要使用 和 括起来 2 1 3switch结构下例的switch中变量为整数型 例2 3intmain void inttest for test 0 test 10 test switch test 变量为整型数的开关语句 case1 printf d n test break 退出开关语句 case2 printf d n test break case3 printf d n test break default puts Error break switch中变量也可为字符 2 1选择 分支 结构 2 2循环结构 for语句的一般形式为 for 表达式1 表达式2 表达式3 循环体 它的执行过程如下 1 先求解表达式1 2 求解表达式2 若其值为真 非0 则执行for语句中指定的内嵌语句 然后执行下面第 3 步 若为假 0 则结束循环 转到第 5 步 3 若表达式为真 在执行指定的语句后 求解表达式3 4 转回上面第 2 步骤继续执行 5 执行for语句下面的一个语句 2 2 1for结构 2 2 1for结构 2 2循环结构 2 2 1for结构 例如 计算1 2 3 100 for i 1 i 100 i sum sum i 相当于以下的while语句 i 1 while i 100 sum sum i i for语句的一般形式用while语句来表示为 表达式1while 表达式2 语句表达式3 2 2循环结构 2 2 1for结构 for语句中表达式1可以省略 其后的分号不能省略介 此时应在for语句之前给循环变量赋初值 如 for i 100 i sum sum i 执行时 跳过 求解表达式1 这一步 其它不变 2 如果表达式2省略 即不判断循环条件 循环无终止地进行下去 也就是认为表达式2始终为真 如 for i 1 i sum sum i 2 2循环结构 2 2 1for结构 3 表达式3也可以省略 但此时程序设计者应另外设法保证循环能正常结束 如 for sum 0 i 1 i 100 sum sum十i i 本例把i 的操作不放在for语句的表达式3的位置处 而作为循环体的一部分 效果是一样的 都能使循环正常结束 4 可以省略表达式1和表达式3 只有表达式2 即只给循环条件 如 for i 100 sum sum i i 相当于 5 三个表达式都可省略 如for 语句 2 2循环结构 2 2 2while结构和do while结构 while语句用来实现 当型 循环结构 其一般形式如下 whi1e 表达式E 循环体 执行过程 计算表达式E的值 若E为非0 则执行语句s 然后转 若E为0 则退出循环 执行该循环后的语句 特点 先判断表达式 后执行语句 因此 若进入while循环时E的值就是0 则语句S一次也不执行 2 2循环结构 2 2 2while结构和do while结构 例如 计算1 2 3 100 intmain void inti sum 0 i 1 while i 100 sum i i printf sum d sum 2 2循环结构 2 2 2while结构和do while结构 do while语句用来实现 直到型 循环结构 其一般形式为 do 循环体 while 表达式E 执行过程 执行循环体S 计算E值若E的值为真 非0 则转 若E的值为假 0 则结束循环 特点 先执行循环体 再判断表达式 因此循环体至少执行一次 2 2循环结构 例如 计算1 2 3 100 main inti sum 0 i 1 do sum i i while i 100 printf sum d sum 2 2 2while结构和do while结构 while循环和do while循环的区别在于 a 它们执行循环体与计算表达式的先后顺序不同 do while先执行循环体 再计算表达式 while循环为先计算表达式 表达式的结果为非零值 则执行循环体语句 b do while至少要执行一次循环体 while执行循环体的次数可能为零次或若干次 2 2循环结构 猴子吃桃问题 猴子第一天摘下若干个桃子 当即吃了一半 还不瘾 又多吃了一个 第二天早上又将剩下的桃子吃掉一半 又多吃了一个 以后每天早上都吃了前一天剩下的一半零一个 到第10天早上想再吃时 见只剩下一个桃子了 求第一天共摘了多少个桃子 main intday x1 x2 x1是今天 x2是昨天 day 9 x2 1 while day 0 x1 x2 1 2 第一天的桃子数是第2天桃子数加1后的2倍 x2 x1 day printf thetotalis d n x1 2 2 2while结构和do while结构 2 2循环结构 本节课新内容到此结束 后面的内容为下一节 2 2 3循环嵌套 一个循环体内又包含另一个完整的循环结构 称为循环的嵌套 内嵌的循环中还可以嵌套 三种循环 whi1e循环 do whi1e循环和for循环 可以互相嵌套 例如 下面几种都是合法的形式 1 while 3 for for while 2 do 4 while dodo while while while 2 2循环结构 2 2 4break语句和continue语句 1break语句break语句可以使流程跳出switch结构 继续执行switch语句下面的一个语句 break语句还可以用来从循环体内跳出循环体 即提前结束循环 接着执行循环下面的语句 如for r 1 r100 break printf area f area break语句的一般形式 break 注意 break语句只能用于循环语句和switch语句 2 2循环结构 2 2 4break语句和continue语句 2continue语句一般形式为continue 其作用为结束本次循环 即跳过循环体中下面尚未执行的语句 接着进行下一次是否执行循环的判定 continue语句和break语句的区别是 continue语句只结束本次循环 而不是终止整个循环的执行 而break语句则是结束本层循环 不再进行条件判断 如果有以下两个循环结构 1 while 表达式1 2 while 表达式1 if 表达式2 break if 表达式2 continue 2 2循环结构 例6 6把100 200之间的不能被3整除的数输出 main intn for n 100 n 200 n if n 3 0 continue printf d n 2 2 4break语句和continue语句 2 2循环结构 2 2 5程序举例 例1用 4 1 1 3 1 5 1 7 求 的近似值 直到某一项的绝对值小于10 6为止 includeintmain void ints floatn t pi t 1 pi 0 n 1 s 1 while fabs t 1e 6 pi pi t n n 2 s s t s n pi pi 4 printf pi 10 6f pi 2 2循环结构 2 2 5程序举例 例2求Fibonacci数列前40个数 这个数列有如下特点 第1 2两个数为1 1 从第三个数开始 该数是前两个数之和 即 F1 1 n 1 F2 1 n 2 Fn Fn 1 F
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年金沙县中小学教师招聘笔试参考试题及答案解析
- 2025年牙齿贴面服务协议
- 肠内营养的使用
- 2025年三明市三元区中小学教师招聘笔试参考试题及答案解析
- 装修工程设计交底
- 2025年虚拟现实教育培训平台开发协议
- 2025年虚拟数字人直播互动开发合同
- 2025年莆田市涵江区中小学教师招聘笔试参考试题及答案解析
- 重庆江津长寿巴县等七校2025-2026学年高二上数学期末质量检测试题含解析
- 2025年襄樊市中小学教师招聘笔试备考试题及答案解析
- 2022北京首都师大附中高一12月月考数学(教师版)
- 35kV线路施工检修方案范本
- 中层管理人员竞聘笔试题及部分参考答案
- 参考活动4 神奇的DNA教学设计-2025-2026学年初中综合实践活动苏少版七年级上册-苏少版
- (正式版)DB65∕T 4687-2023 《10千伏客户业扩工程典型设计规范》
- 2024年12月贵州高中学业水平考试化学试卷真题(含答案详解)
- 大型储罐拆除施工方案(3篇)
- Unit 4 Helping in the community 阅读理解专项训练(含答案解析)
- 时尚传播学赵春华课件
- 中药雾化法课件
- 2025年秋期学期国开电大本科《人文英语3》一平台机考总题库珍藏版
评论
0/150
提交评论