




已阅读5页,还剩44页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第六章 循环控制 主要内容 6 1概述6 2goto语句以及用goto语句构成循环6 3用while语句实现循环6 4用do while语句实现循环6 5用for语句实现循环6 6循环的嵌套6 7几种循环的比较6 8break语句continue和语句6 9程序举例 6 1概述 什么是循环 为什么要使用循环 问题1 问题2 求学生平均成绩 循环 生活中的例子 击鼓传花 大家坐成一个圈 鼓声响起的时候将花束顺序交到下一个人的手里 依次向下传递 当鼓声突然中断时停止传花 花束落在谁的手里便成为输家4 100米接力赛跑 第1个人跑完100米后将接力棒传给第2个人 第2个人再跑100米 然后是第3个人 直到第4个人跑完最后一个100米共同点 都要完成相同的任务 量变的重复内容都有结束条件 发生质变的界限 6 2goto语句以及用goto语句构成循环 goto语句 无条件转向语句goto语句标号 语句标号用标识符表示 例如 gotolabel 1 合法 goto123 不合法 例6 1 用goto语句和if语句构成循环 计算sum 1 2 3 100 main inti sum 0 i 1 loop if i 100 sum sum i i gotoloop printf d n sum 6 2goto语句以及用goto语句构成循环 滥用goto语句将使程序流程无规律 可读性差 不建议使用goto语句 一般来说 可以有两种用途 1 与if语句一起构成循环结构 2 从循环体中跳转到循环体外 6 3用while语句实现循环 while语句用来实现 当型 循环结构 一般形式 while 表达式 语句执行过程 计算表达式值 若该值为非0时 则执行while语句中的内嵌语句 然后重复上述步骤 直到表达式值为假 为0 则执行while语句的下一条语句 其特点是 先判断表达式 后执行语句 循环体语句 6 3用while语句实现循环 注意 循环体如果包含一个以上的语句 应该用花括弧括起来 以复合语句形式出现 在循环体中应有使循环趋向于结束的语句 1 计算sum 1 2 3 100 第5章循环程序设计 1 计算sum 1 2 3 100 循环体 循环控制条件 循环控制变量 循环的初始化 includevoidmain inti 1 sum 0 while i 100 sum sum i i printf Sum d n sum 第5章循环程序设计 2 计算sum 2 4 6 100 循环体 循环控制条件 循环控制变量 循环的初始化 includevoidmain inti 2 sum 0 while i 100 sum sum i i 2 printf Sum d n sum 2 计算sum 2 4 6 100 循环体 循环控制条件 循环控制变量 循环的初始化 includevoidmain inti 2 sum 0 while i 100 sum sum i i 2 printf Sum d n sum 6 4do while语句 do while语句的特点 先执行循环体 然后判断循环条件是否成立 一般形式 do循环体语句while 表达式 执行过程 先执行一次指定的循环体语句 然后判别表达式 当表达式的值为非零 真 时 返回重新执行循环体语句 如此反复 直到表达式的值等于0为止 此时循环结束 6 4用do while语句实现循环 while语句和用do while语句的比较 二者是完全等价的 do while语句有可能一次也不执行循环体 循环的变化 sum 1 2 3 100 includevoidmain inti 1 sum 0 while i 100 sum sum i i printf Sum d n sum includevoidmain inti 1 sum 0 do sum sum i i while i 100 printf Sum d n sum 顺序打印1 10的阶乘 即1 2 10 本题的关键是求阶乘数学上 n 1 2 3 n 1 n 外循环 内循环 对比程序 更优 includevoidmain inti 1 floatf 1 while i 10 f f i printf 2d 0f n i f i 思考一下 8 10的阶乘 includevoidmain inti 1 j floatf while i 10 j 1 f 1 while j i f f j j printf 2d 0f n i f i 6 5用for语句实现循环 一般形式 for 表达式1 表达式2 表达式3 语句 表达式1 初始化表达式 只执行一次表达式2 循环控制表达式 控制循环的结束表达式3 增量表达式 使表达式2趋向于假 6 5用for语句实现循环 for语句的执行过程 1 先求解表达式1 2 求解表达式2 若其值为真 非0 则执行for语句中指定的内嵌语句 然后执行下面第 3 步 若为假 值为0 则结束循环转到第 5 步 3 求解表达式3 4 转回上面第 2 步骤继续执行 5 循环结束 执行for语句下面的一个语句 任意输入10个数 求平均值 includevoidmain inti floatx sum 0 printf Enter10numbersonebyone n for i 1 i 10 i scanf f 例 顺序打印1 10的阶乘 即1 2 3 10 includevoidmain inti j floatf for i 1 i 10 i f 1 for j 1 j i j f f j printf 2d 0f n i f includevoidmain inti 1 j floatf while i 10 j 1 f 1 while j i f f j j printf 2d 0f n i f i 例 打印几何图形 对于这类问题 每行中星号的个数 总行数等都应该用循环结构进行控制 而不是直接输出若干行字符串 includevoidmain inti j for i 1 i 4 i for j 0 j i j putchar for j 1 j 4 j putchar putchar n 2020 3 17 25 可编辑 for语句的变化形式 可以省略for语句的 表达式1 或 表达式3 也可以都省略 退化为 while语句 例 将用键盘输入的若干字符顺序输出到屏幕上 includevoidmain charch for ch getchar n putchar ch 6 6循环的嵌套 一个循环体内又包含另一个完整的循环结构称为循环的嵌套 内嵌的循环中还可以嵌套循环 这就是多层循环 三种循环 while循环 do while循环和for循环 可以互相嵌套 6 6循环的嵌套 下面几种都是合法的形式 1 while 2 do 3 for while dofor while while 6 6循环的嵌套 4 while 5 for 6 do do while for while while 错误的嵌套形式 循环必须是完整的 不允许内外循环交叉嵌套f 1 while i 10 i 1 do f f i i while i 10 混乱的控制条件 内外循环的循环控制条件通常是分开的 相对独立的i 1 s 0 while i 3 s s f i 1 f 1 while i 5 i 2 f f i i 6 7几种循环的比较 1 四种循环都可以用来处理同一问题 一般情况下它们可以互相代替 但一般不提倡用goto型循环 2 在while循环和do while循环中 只在while后面的括号内指定循环条件 因此为了使循环能正常结束 应在循环体中包含使循环趋于结束的语句 如i 或i i 1等 6 7几种循环的比较 for循环可以在表达式3中包含使循环趋于结束的操作 甚至可以将循环体中的操作全部放到表达式3中 因此for语句的功能更强 凡用while循环能完成的 用for循环都能实现 3 用while和do while循环时 循环变量初始化的操作应在while和do while语句之前完成 而for语句可以在表达式1中实现循环变量的初始化 6 7几种循环的比较 4 while循环 do while循环和for循环 可以用break语句跳出循环 用continue语句结束本次循环 break语句和continue语句见下节 而对用goto语句和if语句构成的循环 不能用break语句和continue语句进行控制 6 8break语句和continue语句 6 8 1break语句break语句可以用来从循环体内跳出循环体 即提前结束循环 接着执行循环下面的语句一般形式 break 注意 break语句不能用于循环语句和switch语句之外的任何其他语句中 6 8break语句和continue语句 例 计算r 1到r 10时的圆面积 直到面积area大于100为止 floatpi 3 14159 for area pi r r printf r f area f n r area 当area 100时 执行break语句 提前结束循环 即不再继续执行其余的几次循环 r 1 r 10 r r 1 r 10 r if area 100 break 6 8break语句和continue语句 6 8 2continue语句作用为结束本次循环 即跳过循环体中下面尚未执行的语句 接着进行下一次是否执行循环的判定 一般形式 continue 6 8break语句和continue语句 continue语句和break语句的区别continue语句只结束本次循环 而不是终止整个循环的执行 while 表达式1 for if 表达式2 continue 6 8break语句和continue语句 continue和break的区别break语句则是结束整个循环过程 不再判断执行循环的条件是否成立 while 表达式1 for if 表达式2 break 6 9程序举例 例6 6用 4 1 1 3 1 5 1 7 公式求 的近似值 直到某一项的绝对值小于为止 N S图表示算法 fabs t 1e 6 floats 1 0 pi 0 ints 1 n 1 while pi t n 2 s s t s n pi 4 6 9程序举例 例6 7求Fibonacci数列前40个数 这个数列有如下特点 第1 2两个数为1 1 从第3个数开始 该数是其前面两个数之和 即 F 1 1 n 1 F 2 1 n 2 F n F n 1 F n 2 n 3 算法如图所示 6 9程序举例 例6 8判断m是否素数 算法思想 让m被2到除 如果m能被2 之中任何一个整数整除 则提前结束循环 此时i必然小于或等于k 即 如果m不能被2 k 即 之间的任一整数整除 则在完成最后一次循环后 i还要加1 因此i k 1 然后才终止循环 在循环之后判别i的值是否大于或等于k 1 若是 则表明未曾被2 k之间任一整数整除过 因此输出 是素数 floatk intm i 2 scanf d k sqrt m if m i 0 break i k 1 6 9程序举例 例6 10译密码 为使电文保密 往往按一定规律将其转换成密码 收报人再按约定的规律将其译回原文 思路 可以按以下规律将电文变成密码 将字母A变成字母E a变成e 即变成其后的第4个字母 W变成A X变成B Y变成C Z变成D 练习1 已知在某C语言编译系统中表达式sizeof int 的值是2 如果希望将常量 70000正确地保存在一个变量a中 该变量声明语句应该是 A inta B longinta C unsignedinta D unsignedlonginta 2 常量 n 的数据类型是 3 C语言的源程序中若出现常量 1L 则该常量的类型是 4 2005年秋 以下声明中错误的是 A inta 0 xFFB doublea 1 2e0 5C lo
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 水利类岗位竞聘考试题及答案
- 2025私人劳务合同范本
- 知识竞赛英语试题及答案
- 2025化工原料采购合同范本
- 2025房产公司员工劳动合同范本
- 护理人员考试题库及答案
- 2025企业合同管理法律制度
- 八年级上册地理期中试卷及答案
- 桥面栏杆改造方案范本
- 广东省中山市2025年-2026年小学六年级数学阶段练习(上学期)试卷及答案
- DB23∕T 2334-2019 装配式混凝土渠道应用技术规范
- 机械装配技术课件
- 班级纪律班会课件
- 防性侵防溺水防校园欺凌主题班会课件
- 粮食商贸公司管理制度
- T/CAPE 12004-2022草酸二甲酯加氢制备乙二醇催化剂
- 水平定向钻进管线铺设工程技术规范
- 水利安全风险防控“六项机制”与安全生产培训
- DB44-T 2452-2023 高速公路服务设施建设规模设计规范
- 跨境电商物流风险管理-全面剖析
- 岩移观测施工方案
评论
0/150
提交评论