




已阅读5页,还剩25页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
5 第5章 循环结构的程序设计 第5章循环结构的程序设计 一 内容提要5 1while语句和do while语句 格式 示例 注意 5 2for语句 格式 示例 注意 5 3循环的嵌套5 4continue与break语句5 5循环程序设计举例二 重点与难点1 三种循环的执行过程及区别2 break语句与continue语句的区别 在人们所要处理的问题中常常遇到需要反复执行某一操作的情况 这就需要用到循环控制 许多应用程序都包含循环 顺序结构 选择结构和循环结构是结构化程序设计的3种基本结构 是各种复杂程序的基本构造单元 因此程序设计者必须熟练掌握循环结构的概念及使用方法 while语句的一般形式如下 while 表达式 语句其作用是 当指定的条件为真 表达式为非0 时 执行while语句中的内嵌语句 其流程图见图5 1 其特点是 先判断表达式 后执行语句 while循环称为当型循环 图5 1 5 1 1用while语句构成循环 例5 1求1 2 3 100 用流程图表示算法 见图5 2 includeusingnamespacestd intmain inti 1 sum 0 while i 100 sum sum i i cout sum sum endl 运行结果为sum 5050 图5 2需要注意 1 循环体如果包含一个以上的语句 应该用花括号括起来 以复合语句形式出现 如果不加花括号 则while语句的范围只到while后面第一个分号处 2 在循环体中应有使循环趋向于结束的语句 do while语句的特点是先执行循环体 然后判断循环条件是否成立 其一般形式为do语句while 表达式 它是这样执行的 先执行一次指定的语句 即循环体 然后判别表达式 当表达式的值为非零 真 时 返回重新执行循环体语句 如此反复 直到表达式的值等于0为止 此时循环结束 可以用图5 3表示其流程 5 1 2do while语句 图5 3图5 4 例5 2用do while语句求1 2 3 100 先画出流程图 见上图5 4 includeusingnamespacestd intmain inti 1 sum 0 do sum sum i i while i 100 cout sum sum endl return0 运行结果与例5 1相同 可以看到 对同一个问题可以用while语句处理 也可以用do while语句处理 do while语句结构可以转换成while结构 二者区别 C 中的for语句使用最为广泛和灵活 不仅可以用于循环次数已经确定的情况 而且可以用于循环次数不确定而只给出循环结束条件的情况 它完全可以代替while语句 for语句的一般格式为for 表达式1 表达式2 表达式3 语句它的执行过程如下 1 先求解表达式1 2 求解表达式2 若其值为真 值为非0 则执行for语句中指定的内嵌语句 然后执行下面第 3 步 若为假 值为0 则结束循环 转到第 5 步 5 2for语句 3 求解表达式3 4 转回上面第 2 步骤继续执行 5 循环结束 执行for语句下面的一个语句 可以用图5 5来表示for语句的执行过程 图5 5 for语句最简单的形式也是最容易理解的格式如下 for 循环变量赋初值 循环条件 循环变量增值 语句例如for i 1 i 100 i sum sum i 它的执行过程与图5 2完全一样 它相当于以下语句 i 1 while i 100 sum sum i i 显然 用for语句简单 方便 for语句的使用有许多技巧 可以使程序精炼简洁 说明 1 for语句的一般格式中的 表达式1 可以省略 此时应在for语句之前给循环变量赋初值 2 如果表达式2省略 即不判断循环条件 循环无终止地进行下去 也就是认为表达式2始终为真 3 表达式3也可以省略 但此时程序设计者应另外设法保证循环能正常结束 4 可以省略表达式1和表达式3 只有表达式2 即只给循环条件 5 3个表达式都可省略 6 表达式1可以是设置循环变量初值的赋值表达式 也可以是与循环变量无关的其他表达式 7 表达式一般是关系表达式 如i 100 或逻辑表达式 如a b x y 但也可以是数值表达式或字符表达式 只要其值为非零 就执行循环体 C 中的for语句比其他语言中的循环语句功能强得多 可以把循环体和一些与循环控制无关的操作也作为表达式1或表达式3出现 这样程序可以短小简洁 但过分地利用这一特点会使for语句显得杂乱 可读性降低 建议不要把与循环控制无关的内容放到for语句中 1 3种循环都可以用来处理同一问题 一般情况下它们可以互相代替 2 while和do while循环 是在while后面指定循环条件的 在循环体中应包含使循环趋于结束的语句 如i 或i i 1等 for循环可以在表达式3中包含使循环趋于结束的操作 甚至可以将循环体中的操作全部放到表达式3中 因此for语句的功能更强 凡用while循环能完成的 用for循环都能实现 3 用while和do while循环时 循环变量初始化的操作应在while和do while语句之前完成 而for语句可以在表达式1中实现循环变量的初始化 几种循环的比较 一个循环体内又包含另一个完整的循环结构 称为循环的嵌套 内嵌的循环中还可以嵌套循环 这就是多层循环 3种循环 while循环 do while循环和for循环 可以互相嵌套 例如 下面几种都是合法的形式 1 while while 5 3循环的嵌套 2 do do while while 3 for for 4 while do while 5 for while 6 do for while 在4 3节中已经介绍过用break语句可以使流程跳出switch结构 继续执行switch语句下面的一个语句 实际上 break语句还可以用于循环体内 break语句的一般格式为break 其作用为使流程从循环体内跳出循环体 即提前结束循环 接着执行循环体下面的语句 break语句只能用于循环语句和switch语句内 不能单独使用或用于其他语句中 5 4break语句和continue语句 continue语句的一般格式为continue 其作用为结束本次循环 即跳过循环体中下面尚未执行的语句 接着进行下一次是否执行循环的判定 continue语句和break语句的区别是 continue语句只结束本次循环 而不是终止整个循环的执行 而break语句则是结束整个循环过程 不再判断执行循环的条件是否成立 如果有以下两个循环结构 1 while 表达式1 if 表达式2 break 2 while 表达式1 if 表达式2 continue 程序 1 的流程图如图5 18所示 而程序 2 的流程如图5 19所示 请注意图5 18和图5 19中当 表达式2 为真时流程的转向 图5 18图5 19 例5 5用下面公式求 的近似值 4 1 1 3 1 5 1 7 直到最后一项的绝对值小于10 7为止 根据给定的算法很容易编写程序如下 include include includeusingnamespacestd intmain ints 1 doublen 1 t 1 pi 0 while fabs t 1e 7 pi pi t n n 2 5 5编写循环结构的程序 s s t s n pi pi 4 cout pi setiosflags ios fixed setprecision 6 pi endl return0 运行结果为pi 3 141592注意 不要把n定义为整型变量 否则在执行 t s n 时 得到t的值为0 原因是两个整数相除 例5 6求Fibonacci数列前40个数 这个数列有如下特点 第1 2个数为1 1 从第3个数开始 每个数是其前面两个数之和 即F1 1 n 1 F2 1 n 2 Fn Fn 1 Fn 2 n 3 这是一个有趣的古典数学问题 有一对兔子 从出生后第3个月起每个月都生一对兔子 小兔子长到第3个月后每个月又生一对兔子 假设所有兔子都不死 问每个月的兔子总数为多少 可以列表看出兔子数的规律 根据给出的每月兔子总数的关系 可编写程序如下 include includeusingnamespacestd intmain longf1 f2 inti f1 f2 1 for i 1 i 20 i cout setw 12 f1 setw 12 f2 if i 2 0 cout endl 每输出完4个数后换行 使每行输出4个数f1 f1 f2 左边的f1代表第3个数 是第1 2个数之和f2 f2 f1 左边的f2代表第4个数 是第2 3个数之和 return0 例5 8找出100 200间的全部素数 include include includeusingnamespacestd intmain intm k i n 0 boolprime 定义布尔变量primefor m 101 m 200 m m 2 判别m是否为素数 m由101变化到200 增量为2 prime true 循环开始时设prime为真 即先认为m为素数k int sqrt m 用k代表根号m的整数部分for i 2
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 争做少先好网民课件
- 临高食品安全培训班课件
- 公司厨房安全培训报道课件
- IT资产管理系统故障应急预案
- 公司劳务输出培训课件
- 十年(2016-2025)高考英语真题分类汇编:专题24 书面表达图表类(全国)(解析版)
- 2025年河北省中考道德与法治试卷含答案
- 2025年普法学法知识竞赛题库及完整答案(名师系列)
- 公司内部安全培训制度课件
- 2025年初级保安员考试题库与参考答案
- 卡西欧 fx-991CN X 科学计算器使用说明书
- 排污许可条例培训课件
- 婴儿配方奶粉管理办法
- 【语文 北京版】2025年高考招生统一考试高考真题语文试卷(真题+答案)
- 大健康产业发展现状与趋势分析
- 世界避孕日培训
- 政务摄影培训课件模板
- 快递行业包裹分拣操作流程模拟题
- 2025年新疆中考数学试卷真题(含答案解析)
- 中央厨房体系管理制度
- 模块六 点的投影(课件)-中职高考《机械制图》一轮复习(高教版第5版)
评论
0/150
提交评论