已阅读5页,还剩13页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第3章循环结构程序设计 3 1循环语句概述3 2for语句和while语句3 3直到型循环do while语句3 4break语句与continue语句3 5应用举例良好的源程序书写习惯 注释 续 Return 3 1循环语句概述 求1 100的累计和 根据已有的知识 可以用 1 2 100 来求解 但显然很繁琐 现在换个思路来考虑 首先设置一个累计器sum 其初值为0 利用sum n来计算 n依次取1 2 100 只要解决以下3个问题即可 1 将n的初值置为1 2 每执行1次 sum n 后 n增1 3 当n增到101时 停止计算 此时 sum的值就是1 100的累计和 根据已有的知识 单独实现每一步都不难 但是 由于需要经常使用这种重复计算结构 称为循环结构 C语言提供了3条循环语句来实现 以简化 并规范循环结构程序设计 在 语言中 可用以下语句实现循环 1 用for语句 2 用do while语句 3 用while语句 4 用goto语句和if语句构成循环 使用goto语句实现求解1 100累计和的程序可以如下 main intn 1 sum 0 loop sum n n if n 100 gotoloop printf sum d n sum 其中 loop 为语句标号 格式 标号 语句行 其命名遵循标识符命名规则 goto语句格式 goto标号 功能为 使系统转向标号所在的语句行执行 注意 结构化程序设计方法 主张限制使用goto语句 因为滥用goto语句 将会导致程序结构无规律 可读性差 另外 从功能上说 for语句可完全代替当型循环语句while 所以该语句也不是必需的 Return 3 2for语句和while语句 在3条循环语句中 for语句最为灵活 不仅可用于循环次数已经确定的情况 也可用于循环次数虽不确定 但给出了循环继续条件的情况 案例3 1 求1 100的累计和 案例代码文件名 AL5 1 C 程序功能 求1 100的累计和 main inti sum 0 将累加器sum初始化为0 for i 1 i 100 i sum i 实现累加 printf sum d n sum 程序演示 程序运行情况如下 sum 5050 案例3 2 求n的阶乘n n 1 2 n 案例代码文件名 AL5 2 C 程序功能 求n main inti n longfact 1 将累乘器fact初始化为1 printf Inputn scanf d 程序演示 程序运行情况如下 Inputn 5 5 120 1 for语句的一般格式for 变量赋初值 循环继续条件 循环变量增值 循环体语句组 2 for语句的执行过程执行过程如图5 1所示 1 求解 变量赋初值 表达式 2 求解 循环继续条件 表达式 如果其值非0 执行 3 否则 转至 4 3 执行循环体语句组 并求解 循环变量增值 表达式 然后转向 2 4 执行for语句的下一条语句 3 说明 1 变量赋初值 循环继续条件 和 循环变量增值 部分均可缺省 甚至全部缺省 但其间的分号不能省略 2 当循环体语句组仅由一条语句构成时 可以不使用复合语句形式 如上例所示 3 循环变量赋初值 表达式 既可以是给循环变量赋初值的赋值表达式 也可以是与此无关的其它表达式 如逗号表达式 例如 for sum 0 i 100 i sum i for sum 0 i 1 i 100 i sum i 4 循环继续条件 部分是一个逻辑量 除一般的关系 或逻辑 表达式外 也允许是数值 或字符 表达式 4 while语句 1 一般格式while 循环继续条件 循环体语句组 2 执行过程执行过程如图5 2所示 1 求解 循环继续条件 表达式 如果其值为非0 转2 否则转3 2 执行循环体语句组 然后转1 3 执行while语句的下一条 显然 while循环是for循环的一种简化形式 缺省 变量赋初值 和 循环变量增值 表达式 案例3 3 用while语句求1 100的累计和 案例代码文件名 AL5 3 C 程序功能 求1 100的累计和 main inti 1 sum 0 初始化循环控制变量i和累计器sum while i 100 sum i 实现累加 i 循环控制变量i增1 printf sum d n sum 程序演示 程序运行情况如下 sum 5050 5 循环嵌套 1 循环语句的循环体内 又包含另一个完整的循环结构 称为循环的嵌套 循环嵌套的概念 对所有高级语言都是一样的 2 for语句和while语句允许嵌套 do while语句也不例外 Return 3 3直到型循环do while语句 1 一般格式do 循环体语句组 while 循环继续条件 本行的分号不能缺省 当循环体语句组仅由一条语句构成时 可以不使用复合语句形式 2 执行过程执行过程如图5 3所示 1 执行循环体语句组 2 计算 循环继续条件 表达式 如果 循环继续条件 表达式的值为非0 真 则转向 1 继续执行 否则 转向 3 3 执行do while的下一条语句 do while循环语句的特点是 先执行循环体语句组 然后再判断循环条件 案例3 4 用do while语句求解1 100的累计和 案例代码文件名 AL5 4 C 程序功能 求1 100的累计和 main inti 1 sum 0 定义并初始化循环控制变量 以及累计器 do sum i 累加 i while i 100 循环继续条件 i 100 printf sum d n sum 程序演示 do while语句比较适用于处理 不论条件是否成立 先执行1次循环体语句组的情况 除此之外 do while语句能实现的 for语句也能实现 而且更简洁 Return 3 4break语句与continue语句 为了使循环控制更加灵活 语言提供了break语句和continue语句 1 一般格式 break continue 2 功能 1 break 强行结束循环 转向执行循环语句的下一条语句 2 continue 对于for循环 跳过循环体其余语句 转向循环变量增量表达式的计算 对于while和do while循环 跳过循环体其余语句 但转向循环继续条件的判定 3 break和continue语句对循环控制的影响如图5 4所示 4 说明 1 break能用于循环语句和switch语句中 continue只能用于循环语句中 2 循环嵌套时 break和continue只影响包含它们的最内层循环 与外层循环无关 Return 3 5应用举例 例3 5 求Fibonacci数列的前40个数 该数列的生成方法为 F1 1 F2 1 Fn Fn 1 Fn 2 n 3 即从第3个数开始 每个数等于前2个数之和 算法设计 请参见第2章第1节 2 1 参考源程序如下 案例代码文件名 AL5 3 C main longintf1 1 f2 1 定义并初始化数列的头2个数 inti 1 定义并初始化循环控制变量i for i 20 i 1组2个 20组40个数 printf 15ld 15ld f1 f2 输出当前的2个数 if i 2 0 printf n 输出2次 4个数 换行 f1 f2 f2 f1 计算下2个数 程序演示 例3 6 输出10 100之间的全部素数 所谓素数n是指 除1和n之外 不能被2 n 1 之间的任何整数整除 算法设计要点 1 显然 只要设计出判断某数n是否是素数的算法 外面再套一个for循环即可 2 判断某数n是否是素数的算法 根据素数的定义 用2 n 1 之间的每一个数去整除n 如果都不能被整除 则表示该数是一个素数 判断一个数是否能被另一个数整除 可通过判断它们整除的余数是否为0来实现 参考源程序如下 main inti 11 j counter 0 for i 100 i 2 外循环 为内循环提供一个整数i for j 2 j i 整数i是素数 输出 计数器加1 printf 6d i counter 程序演示 思考题 外循环控制变量i的初值从11开始 增量为2的作法有什么好处 为提高运行速度 如何优化内循环 提示 从减少计算次数角度来考虑 Return 良好的源程序书写习惯 注释 续 3 循环结构在C语言中 循环结构由循环语句for while和do while来实现 作为注释 应在它们的前面说
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年国家电网电工类能力招聘考试笔试试题含答案
- Unit 4 Time to celebrate. period 2. 教学设计2024-2025学年外研版英语七年级上册
- 2026-2031中国视频监控行业投资前景预测研究报告
- 山东省海阳市美宝学校七年级安全教育教学设计
- 京改版八年级下册第14章第一节《环境对生物的影响》教学设计
- 产品营销策划与推广方案设计
- 国家电网公司东北分部2025年下半年高校毕业生招聘(第二批)易考易错模拟试题(共500题)试卷后附参考答案
- 四川绵阳经开区司法所招考聘用司法行政辅助人员易考易错模拟试题(共500题)试卷后附参考答案
- 公司企业文化建设与管理方案
- 吉林通化梅河口市教育系统事业单位招聘高层次人才30人(2号)易考易错模拟试题(共500题)试卷后附参考答案
- GB/T 18287-2000蜂窝电话用锂离子电池总规范
- GA 6-2004消防员灭火防护靴
- FZ/T 62033-2016超细纤维毛巾
- 不孕症及辅助生殖技术
- 2023年武汉市江夏文化旅游发展集团有限公司招聘笔试题库及答案解析
- 四川省某堤防工程单位工程监理工作报告
- 课程与教学的基本原理讲解
- 年级藏文期中试卷分析篇
- 调机品管理规定
- ZXV10_M9000培训(40页)ppt课件
- 《专业投机原理》
评论
0/150
提交评论