




已阅读5页,还剩33页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第五章循环结构程序设计 概述while语句do while语句for语句几种循环结构的比较循环的嵌套循环控制语句算法及其表示方法简介循环算法的设计与实现小结 循环结构 按照某测试条件 对某一操作序列进行重复性操作的一种计算结构 其中 测试条件 称为循环条件 重复的操作序列称为循环体 C语言中循环语句 具有实现这种重复性的功能 循环程序设计按照循环结构思想进行程序设计的方法 本章主要介绍 用if语句和goto语句构成循环 用while语句构成循环 用do while语句构成循环 用for语句构成循环 循环的嵌套 循环控制语句 break语句 continue语句 循环算法的设计和实现 简要介绍算法及其表示方法 概述C语言可实现循环的语句 用goto和if构成循环while语句do while语句for语句goto语句及用goto构成循环goto语句一般格式 goto语句标号 标号 语句 5 2goto语句与循环 goto语句 无条件转移语句 goto语句为无条件控制转向语句 它会导致程序执行流程的一个无条件的跳转 从而控制程序执行直接跳转到一个带有标号语句的位置 带有标号的语句的一般形式为 标号 语句 用标识符来定义标号 例5 1用if语句和goto语句构成循环 求5 图5 1为程序流程图 main inti result i 5 result 1 loop if i 1 result i i gotoloop printf 5 d n result goto功能 无条件转移语句说明 不能用整数作标号 标号只能出现在goto所在函数内 且唯一 标号只能加在可执行语句前面限制使用goto语句 ch5 1 c includemain inti sum 0 i 1 loop if i 100 sum i i gotoloop printf d sum sum 0 1 1第1次sum 1 2 3第2次sum 3 3 6第3次sum 6 4 10第4次 sum 4950 100 5050第100次 例 用if和goto语句构成循环 体会程序设计思想累加器 用于累加求和计数器 用于提供加数 一般形式 while 表达式 语句 执行流程 5 3while语句 循环体 复合语句 循环控制条件 特点 先判断表达式 后执行循环体说明 循环体有可能一次也不执行循环体可为任意类型语句下列情况 退出while循环条件表达式不成立 为零 循环体内遇break return goto无限循环 while 1 循环体 While语句特点和说明 用while循环求 ch5 2 c includemain inti sum 0 i 1 while i 100 sum sum i i printf d sum 例 ch5 21 c includemain inti 1 while i 10 printf d d d n i i i i i 运行结果 1 1 12 2 43 3 94 4 165 5 256 6 367 7 498 8 649 9 8110 10 100 例 显示1 10的平方 一般形式 do语句 while 表达式 执行流程 5 4do while语句 循环体 复合语句 循环控制条件 特点 先执行循环体 后判断表达式说明 至少执行一次循环体do while可转化成while结构 do while语句特点和说明 例5 3用do while语句实现n 的求解 includevoidmain intn i doublep printf n n scanf d 一般形式 for expr1 expr2 expr3 语句 执行流程 5 5for语句 循环体 复合语句 for 循环变量赋初值 循环条件 循环变量增值 语句 说明 for语句中expr1 expr2 expr3类型任意 都可省略 但分号 不可省无限循环 for for语句可以转换成while结构 expr1 while expr2 循环体语句 expr3 for语句一般应用形式 例 includemain inti 0 for i 0 i 10 i putchar a i 运行结果 abcdefghij 例 includemain inti 0 for i 10 i putchar a i 例 includemain inti 0 for i 10 putchar a i 例 includemain inti 0 for i 10 putchar a i i 例子 例 for 梯形法求数值积分 5 6几种循环结构的比较 1 结构化程序设计 不提倡用if语句和goto语句构成循环 2 用while语句和do while语句组成循环结构时 循环变量初始化应在while语句和do while语句之前 在while后指定循环继续的条件 循环体语句中应包含使循环趋于结束的语句 3 循环次数无法确定 但循环条件可以确定时 用while语句和do while语句组成循环结构 循环次数可以确定时 用for语句组成循环结构 4 在while语句 dowhile语句和for语句的循环体中 都可以用break语句跳出循环 用continue语句结束本次循环 break语句和continue语句见5 8节 而在if语句和goto语句构成的循环体中不能用 循环控制语句 三种循环可互相嵌套 层数不限外层循环可包含两个以上内循环 但不能相互交叉嵌套循环的执行流程 1 while while 2 do do while while 3 while do while 4 for do while while 嵌套循环的跳转禁止 从外层跳入内层跳入同层的另一循环向上跳转 5 7循环的嵌套 for i 1 i 10 i for j 1 j 10 j printf j 9 4d n 4d i j 循环的嵌套 图解 5 8循环控制语句 break语句功能 在循环语句和switch语句中 终止并跳出循环体或开关体说明 break只能终止并跳出break所在层的结构break不能用于循环语句和switch语句之外的任何其它语句之中 循环语句里 break只可出现在循环体中 循环控制语句 图解1 循环控制语句 图解2 例5 6从键盘上输入一整数 如果该整数是素数 则输出1 否则输出零 include includevoidmain intnum k i flag printf 请输入一整型数 scanf d 功能 结束本次循环 跳过循环体中尚未执行的语句 进行下一次是否执行循环体的判断仅用于循环语句中 continue语句 例5 7输出1 100之间不能被3或5或7整除的数 且每行输出5个 includevoidmain intnum n n 0 for num 1 num 100 num if num 3 0 num 5 0 num 7 0 continue 若num能被3 5 7中的任一个数整除 结束本次循环 继续下一个数的测试 n n为计数器变量 用于累计满足条件数的个数 printf 10d num if n 5 0 printf n 若每行输出5个数 则产生换行 printf n 5 9算法及其表示方法简介 一个程序应包括两个方面内容 对数据的描述 即在程序中要指定加工 运算 对象的数据类型和组织形式 也就是数据结构 数据结构实质上解决的是加工对象 数据 在内存中的物理结构 存储形式 与逻辑结构 组织形式 它属于复杂的研究课题 在高级语言中将这一复杂的课题转换为简单 易为人们所接受的形式 即数据类型 对操作的描述 即解决问题的方法 步骤的描述 即算法 算法是设计程序进行问题求解的关键数据 加工 运算 的对象 算法 操作 对数据进行加工处理 以得到期望的结果 程序设计 数据结构 和 操作步骤 即算法 是设计程序的关键 数据结构与算法相互影响 同一问题所设计的数据结构不同 可能会导致不同的算法 将对程序的执行效率产生深远影响 因此 著名计算机科学家沃思 NikiklausWirth 提出一个公式 数据结构 算法 程序 算法 设计程序的关键 程序 算法 数据结构 程序设计方法 语言工具和环境 算法 设计程序的关键 解决 做什么 和 怎么做 的问题 数据结构 数据类型 解决加工对象在内存的存储形式 组织形式 程序设计方法 以操作语句对算法进行具体描述的方法 语言 描述算法的工具 编程需要采用合适的语言 5 9 1算法及其特性 一个算法应该具有以下特点 1 有穷性 一个算法应该包含有限的操作步骤 而不是无限的 如循环语句中必须有使循环趋于结束的语句 不能出现无限循环 2 确定性 算法中的每一个步骤都应当是确定的 而不应产生歧义 3 有零个或多个输入 一个算法在执行时需要从外部获取必要的信息 这个过程是通过输入实现的 一个算法也可以没有输入 4 有一个或多个输出 算法的目的就是为了解决问题 解 就是输出 算法的输出不一定就是计算机的屏幕输出或打印输出 算法得到的结果就是算法的输出 没有输出的算法是没有意义的 5 有效性 算法中的每一个步骤都应当能有效的执行 并能得到确定的结果 例如 若a b为实型数据类型 则a b就不能有效执行 5 9 2算法表示方法 用自然语言描述用流程图表示算法用N S流程图描述算法用程序设计语言实现算法 流程图 N S图描述算法 求2000 2500年中的闰年流程图和N S图 y是闰年 y不是闰年 Y不是闰年 Y是闰年 Y 2000 y 4 0 0 非0 直到y 2500 y y 1 y 100 0 非0 0 y 400 0 0 非0 算法 1 能被4整除 但不能被100整除的年份 2 能被100整除 又能被400整除的年份 5 9 3用程序设计语言实现算法 例5 11用C语言实现例5 9中求闰年的算法 includevoidmain inty y 2000 do if y 4 0 if y 100 0 printf d是闰年 n y elseif y 400 0 printf d是闰年 n y elseprintf d非闰年 n y elseprintf d非闰年 n y y y 1 while y 2500 5 10循环算法的设计与实现 穷举算法对求解问题的所有可能性的解 逐个用解的条件进行测试 若一组解满足测试条件 就找到一组答案 重复该过程 直到所有的可能性测试完毕 穷举算法也称 试凑法 迭代算法由已知解 初值 依据递推规律 不断得到新解的过程 迭代算法涉及到两个关键要素 迭代初值和迭代公式 规律 例5 13找100以内的素数 include includevoidmain inti j isprime n 0 for i 3 i 100 i 2 由于偶数不可能是素数 所以从3开始 每步长加2 isprime 1 isprime为标志变量 先假定i为素数 for j 2 j i j 本循环用于穷举j是否为i的因子 穷举范围 2 i 1 if i j 0 如果j是i的因子 将标志变量置零 说明i不是素数 isprime 0 break if isprime n n为计数器变量 用于累计素数的个数 printf 5d i i为素数 if n 10 0 每输出10个数 进行换行 printf n printf n 例5 17输出Fibonacci数列前40项 从第三项起 每项的值是其前两项之和分析 迭代初值 f1 1 f2 1 迭代公式 f n f n 1 f n 2 n 2 includevoidmain longi f1 f2 f1 f2 1 for i 1 i 20 i printf 15ld 15ld f1 f2 if i 2 0 printf n f1 f1 f2 f2 f2 f1 printf n 5 11小结 1 C语言循环语句主要有三种 while语句 do while语句
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年生态湿地公园建设与城市生态安全规划技术创新分析报告
- 2025-2030花卉种植市场消费行为及渠道拓展策略分析报告
- 植物儿童用品材料创新创业项目商业计划书
- 海参炖汤店创新创业项目商业计划书
- 无线电导航创新创业项目商业计划书
- 水生植物宠物食品添加创新创业项目商业计划书
- 教师从业考试及答案解析
- 培训安全员c证试题内容及答案解析
- Unit 4 My Favorite Subject Section B Period VI Project 说课稿 2024-2025学年人教版英语七年级上册
- 2025年超细干粉灭火剂行业研究报告及未来行业发展趋势预测
- 2025年大麻酚油(CBD油)行业研究报告及未来行业发展趋势预测
- 行政执法常识考试题库及答案
- 山东省潍坊市2025-2026学年上学期高三开学调研监测语文试题参考答案
- 钢结构隔断施工方案(3篇)
- 2025年IT技术支持工程师招聘面试技巧与模拟题答案
- 退休业务办理培训课件
- GB/T 20716.2-2025道路车辆牵引车和挂车之间的电连接器(7芯)第2部分:12 V标称电压车辆的制动系统和行走系的连接
- 学校“1530”安全教育记录表(2024年秋季全学期)
- 公路工程标准施工招标文件(2018年版)
- 最全的食物相克表(打印版)
- 施工现场安全标志和安全防护设施设置方案
评论
0/150
提交评论