




已阅读5页,还剩70页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第6章循环控制结构 本章学习内容 计数控制的循环 条件控制的循环 for语句 while语句 do while语句 continue语句 break语句 嵌套循环 程序调试与排错 Example 如何确定程序的输入和输出呢 Drawaflowchartforthefollowingproblem 读入5个整数 计算并显示它们的和 Input 5个整数n1 n2 n3 n4 n5Output n1 n2 n3 n4 n5的和Inputexample 23456Outputexample 20 问题的提出 Inputn1 Inputn2 Inputn3 inputn4 inputn5 outputsum sum n1 n2 n3 n4 n5 Assumeinputexample 23456 end 使用了6个不同的变量 start 问题的提出 读入1000个整数 计算并显示它们的和 6 1循环控制结构与循环语句 如何对循环进行控制呢 counter 1 sum 0 counter 6 sum sum n false true counter outputsum inputn 1 counter sum 0 1 6true 2 n 0 2 2 2 2 6true 3 2 3 5 3 3 6true 4 5 4 9 4 4 6true 5 9 5 14 5 5 6true 6 14 6 20 6 6 6false counter controlled 计数器每次增1 使用了3个变量 Assumeinputexample 23456 6 2计数控制的循环 end 6 2计数控制的循环 counter initialValue testcounter Stepn Stepx false true Updatecounter 循环体 BodyofLoop 当型循环 Conditionistestedfirst计数控制 LoopiscontrolledbyacounterSyntaxfor initialvalue condition updatecounter statement Orfor initialvalue condition updatecounter statement statement for循环语句 循环起始条件 循环结束条件 循环变量增值 i 0 sum 0 i 5 sum sum n false true i outputsum inputn inti sum n sum 0 for i 0 i 5 i scanf d printf d sum for循环语句 A 条件P 直到型循环 假 真 6 3条件控制的循环 A 当型循环 真 假 假 条件P 当型循环 Conditionistestedfirst条件或计数控制 Loopiscontrolledbyconditionoracounter语法while condition statement Orwhile condition statement statement Nosemicolon while循环语句 直到型循环 Statementsintheloopareexecutedfirst atleastonce andconditionistestedlast条件或计数控制 Loopiscontrolledbyconditionoracounter语法do statement statement while condition statement do while循环语句 例6 1 计算并输出1 2 3 n的值 循环次数已知 计数控制的循环 循环次数已知 计数控制的循环 例6 1 计算并输出1 2 3 n的值 循环次数已知 计数控制的循环 例6 1 计算并输出1 2 3 n的值 循环条件第一次就为假 如输入 1 时会怎样 例6 1 计算并输出1 2 3 n的值 A 当型循环 真 假 假 条件P 假 条件P TestingConditionFirst 例6 1 计算并输出1 2 3 n的值 条件P 直到型循环 A 假 真 条件P A 假 Testingconditionlast 例6 1 计算并输出1 2 3 n的值 注意 在for和while语句之后一般没有分号有分号表示循环体就是分号之前的内容空语句 表示循环体内什么都不做while i 100 i 死循环for i 0 i 100 i printf d i 用于延时 注意 如何减少循环的次数 例6 1 计算并输出1 2 3 n的值 例6 1 计算并输出1 2 3 n的值 逗号运算符 CommaOperator 多数情况下 并不使用整个逗号表达式的值 更常见的情况是要分别得到各表达式的值主要用在循环语句中 同时对多个变量赋初值等for i 1 j 100 i j i j 例6 3 计算并输出n 1 2 3 n 例6 4 计算并输出1 2 3 n 若用户不慎输入了非法字符 那么先清除输入缓冲区中的内容 然后提示用户重新输入数据直到输入正确为止 例6 5 输入两个整型数 计算并输出两个整数的最大值 循环次数未知 标记控制的循环 标记值 SentinelValue 例6 2 输入数据 显示每次累加的结果 直到输入0时为止 循环次数未知 标记控制的循环 例6 2 输入数据 显示每次累加的结果 直到输入0时为止 选择三种循环的一般原则 如果循环次数已知 计数控制的循环用for如果循环次数未知 条件控制的循环用while如果循环体至少要执行一次用do while这只是 一般 原则 不是 原则 转移控制语句 goto语句 break和continue语句 break语句的作用 循环体中使用break语句可以提前结束整个循环 Continue语句的作用 循环体中使用continue语句可以提前结束本次循环 return语句标准库函数exit 6 5流程的转移控制 break语句和continue语句对for while do while循环进行内部手术 Break 退出一层循环或switch Continue 中断此次循环 开始下一次 6 5流程的转移控制 n 10 Pleaseentern 10 n 10Pleaseentern 10 Programisover 例6 14 演示break与continue 10 includemain inti n for i 1 i 5 i printf Pleaseentern scanf d n 10 Pleaseentern 10 n 10Pleaseentern 10 Pleaseentern 20 n 20Pleaseentern 20 Pleaseentern 30 n 30Programisover 例6 14 演示break与continue 10 20 20 30 includemain inti n for i 1 i 5 i printf Pleaseentern scanf d 语句标号 Label 举例error goto语句举例gotoerror 一般形式 goto语句与语句标号 用if goto构成循环 结构形式 语句标号 if 表达式 语句 语句组goto语句标号 kk if a b a a 2 gotokk 此结构构成的是 当型 循环 功能 无条件转去执行语句标号所指语句行 Exit 函数 exit 0 作用是终止整个程序的执行 强制返回操作系统调用该函数需要嵌入头文件 例6 9 输入n值 计算并输出1 2 3 n 利用前项计算后项 例6 9 输入n值 计算并输出1 2 3 n 每次单独计算累加项 使用嵌套循环的注意事项 使用复合语句 以保证逻辑上的正确性即用一对花括号将各层循环体语句括起来内层和外层循环控制变量不能同名 以免造成混乱采用右缩进格式书写 以保证层次的清晰性 注意 例 输出图形1 编程实现输出四行 号 每行输出5个 号main inti j for i 1 i 4 i for j 1 j 5 j printf printf n 2 如何修改程序使其输出直角三角形 includemain inti j m scanf d includemain inti j k m scanf d 3 如何修改程序使其输出正三角形 马克思手稿中有一道趣味数学题 有30个人 其中有男人 女人和小孩 在一家饭馆里吃饭共花了50先令 每个男人各花3先令 每个女人各花2先令 每个小孩各花1先令 问男人 女人和小孩各有几人 解方程组穷举法 方法1 穷举x y z的所有组合 includemain intx y z printf Man tWomen tChildern n for x 0 x 30 x for y 0 y 30 y for z 0 z 30 z if x y z 30 方法2 改进算法 includemain intx y z printf Man tWomen tChildern n for x 0 x 16 x for y 0 y 25 y z 30 x y if 3 x 2 y z 50 printf 3d t 5d t 8d n x y z 水仙花数 打印出所有的 水仙花数 所谓 水仙花数 是指一个三位数 其各位数字立方和等于该数字本身 例如 153 13 53 33 水仙花数解法1 程序 includemain intl1 l2 l3 l4 for l1 1 l1 9 l1 for l2 0 l2 9 l2 for l3 0 l3 9 l3 l4 l1 100 l2 10 l3 if l4 l1 l1 l1 l2 l2 l2 l3 l3 l3 printf Daffodil snumberis d n l4 水仙花数程序实例 解法2 includemain intl1 l2 l3 l4 for l4 100 l4 999 l4 l1 l4 100 l2 l4 100 10 l3 I4 10 if l4 l1 l1 l1 l2 l2 l2 l3 l3 l3 printf Daffodil snumberis d n l4 从键盘任意输入一个正整数 编程判断它是否是素数 若是素数 输出 Yes 否则 输出 No 问题分析 概念 素数是指除了能被1和它本身整除外 不能被其他任何整数整除的数 判断素数的方法 把m作为被除数 把i 2 m 1 依次做为除数 若余数都不为0 则说明是素数 简单判断方法 只需用2 的数去除m 即可得到正确的判定结果 负数 0和1不是素数 includemain intm i k flag 1 标志变量flag初值置为1 printf Pleaseenteranumber scanf d 采用设置标志变量的方法 includemain intm i k flag 1 标志变量flag初值置为1 printf Pleaseenteranumber scanf d 采用设置标志变量的方法 includemain intm i k printf Pleaseenteranumber scanf d break方法 include includemain intm i k printf Pleaseenteranumber scanf d goto方法 韩信有一队兵 他想知道有多少人 便让士兵排队报数 按从1至5报数 最末一个士兵报的数为1 按从1至6报数 最末一个士兵报的数为5 按从1至7报数 最末一个士兵报的数为4 最后再按从1至11报数 最末一个士兵报的数为10 你知道韩信至少有多少兵吗 设兵数为x 则x应满足 x 5 1 x 6 5 x 7 4 x 11 10穷举法 对x从1开始试验 例6 15 韩信点兵 includemain intx for x 1 x 5000 x if x 5 1 例6 15 韩信点兵 瞎猫碰死耗子 includemain intx for x 1 x if x 5 1 例6 15 韩信点兵 死循环 includemain intx for x 1 x if x 5 1 例6 15 韩信点兵 goto includemain intx for x 1 x if x 5 1 例6 15 韩信点兵 break include includemain intx for x 1 x if x 5 1 例6 15 韩信点兵 break 标准库函数 作用是终止整个程序的执行 强制返回操作系统 includemain intx intfind 0 置找到标志为假 for x 1 find x if x 5 1 置找到标志为真 例6 15 韩信点兵 标志变量 结构清晰的程序 includemain intx intfind 0 置找到标志为假 while find if x 5 1 置找到标志为真 例6 15 韩信点兵 while 错在哪儿 includemain intx 1 intfind 0 置找到标志为假 while find if x 5 1 例6 15 韩信点兵 while 错在哪儿 includemain intx 1 intfind 0 置找到标志为假 while find if x 5 1 例6 15 韩信点兵 while 你答对了吗 本章学习内容 计数控制的循环 条件控制的循环 for语句 while语句 do while语句 continue语句 break语句 嵌套循环 程序调试与排错 循序渐进式编程 例6 6 猜数游戏 想一个1 100之间的数 猜对 right 猜错 wrong 并提示大小 循序渐进式编程 猜数游戏 例5 4 例6 6 例6 7 例6 12 猜数游戏用到的库函数 怎样模拟计算机 想 一个数呢 随机函数rand 产生 0 RAND MAX 之间的随机数magic rand include defineRAND MAX0 x7FFFRAND MAX在stdlib h中定义 不大于双字节整数的最大值32767产生 0 b 1 之间的随机数magic rand b 产生 a a b 1 之间的随机数magic rand b a include includemain intmagic 计算机 想 的数 intguess 人猜的数 magic rand 100 1 想 一个 1 100 之间的数magic printf Pleaseguessamagicnumber scanf d 例5 4 include includemain intmagic intguess intcounter 记录人猜次数的计数器变量 magic rand 100 1 counter 0 计数器变量count初始化为0 do printf Pleaseguessamagicnumber scanf d 例6 6 猜数游戏用到的库函数 每次运行程序时计算机所 想 的数都是一样的 这是什么原因呢 函数rand 产生的只是伪随机数随机函数srand为函数rand 设置随机数种子来实现对函数rand所产生的伪随机数的 随机化 通过输入随机数种子 产生 0 100 之间的随机数scanf u include includemain intmagic intguess intcounter 记录人猜次数的计数器变量 unsignedintseed printf Pleaseenterseed sca
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年肝胆胰外科手术常用器械及处理知识考试答案及解析
- 2025年实验诊断学常见检测方法原理模拟考试卷答案及解析
- 2025年外伤科手术操作技能考核模拟考试卷答案及解析
- 2025年儿科常见疾病护理知识考察答案及解析
- 2025年眩晕症状诊断与治疗知识考察答案及解析
- 2025年急诊医学应急处置能力测试答案及解析
- 2025年药理学肾上腺素拮抗剂的作用模拟考试答案及解析
- 2025年麻醉学麻醉药物使用技巧与术后镇痛策略答案及解析
- 2025年心理卫生学心理健康评估方法模拟测试卷答案及解析
- 2025年放射肿瘤科学术前沿讨论答案及解析
- 廉租房承包物业合同范本
- 中小学心理健康c证考试试题及答案
- 2025-2026秋季中小学第一学期升旗仪式22周校长演讲稿:第1周 烽火记忆照前路秋风为序启新程
- 污水厂工艺知识培训课件
- 2025秋人教部编版二年级上册语文教学计划
- 2025年中学教师资格证考试(科目二)教育知识与能力冲刺试卷
- 科学护肤知识课件
- 2025年黑龙江全国导游人员资格考试(全国导游基础知识、地方导游基础知识)历年参考题库含答案详解(5套)
- 分级护理落实率
- 幼儿园改造提升项目可行性研究报告
- 2025至2030全球及中国石油天然气中的人工智能行业项目调研及市场前景预测评估报告
评论
0/150
提交评论