循环结构程序设计.ppt_第1页
循环结构程序设计.ppt_第2页
循环结构程序设计.ppt_第3页
循环结构程序设计.ppt_第4页
循环结构程序设计.ppt_第5页
已阅读5页,还剩63页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

5 1程序中需要用循环结构5 2用while语句和do while语句实现循环5 3用for语句实现循环5 4循环的嵌套5 5提前结束循环5 6几种循环的比较5 7程序举例5 8提高部分 第5章循环结构程序设计 P115 5 1程序中需要用循环结构 现实生活中许多问题是需要重复处理计算一个班50学生每人的平均成绩工厂各车间的生产日报表全国各省市的人口统计分析各大学招生情况统计全校教职工工资报表 P115 5 1程序中需要用循环结构 绝大多数的应用程序都包含重复处理循环结构又称为重复结构循环结构和顺序结构 选择结构是结构化程序设计的三种基本结构 它们是各种复杂程序的基本构造单元 P115 5 1程序中需要用循环结构 要构成一个有效的循环 应当指定两个条件 1 需要重复执行的操作 这称为循环体 2 循环结束的条件 即在什么情况下停止重复的操作 P115 5 2用while语句和do while语句实现循环 5 2 1用while语句实现循环5 2 2用do while语句实现循环 P115 5 2 1用while语句实现循环 P115 例5 1求1 2 3 100 即解题思路 这是累加问题 需要先后将100个数相加要重复100次加法运算 可用循环实现后一个数是前一个数加1而得加完上一个数i后 使i加1可得到下一个数 5 2 1用while语句实现循环 P115 sum sum ii i 1 非0 真 0 假 i 1 includevoidmain inti sum 0 i 1 while i 100 sum sum i i printf d n sum 复合语句 能改为i 100 while语句的一般形式如下 while 表达式 语句 循环体 while语句的一般形式如下 while 表达式 语句 真 时执行循环体语句 假 时不执行 循环条件表达式 while循环的特点是 先判断条件表达式后执行循环体语句 5 2 2用do while语句实现循环 P117 do while语句的特点 先无条件地执行循环体 然后判断循环条件是否成立一般形式为 do循环体语句while 表达式 表达式 非0 真 0 假 循环体语句 5 2 2用do while语句实现循环 P117 例5 2用do while循环求 1 2 3 100 即 5 2 2用do while语句实现循环 P117 解题思路 i 100 非0 真 0 假 sum sum ii i 1 sum 0i 1 sum 0 i 1 do sum sum i i while i 100 includevoidmain inti sum 0 i 1 do sum sum i i while i 100 printf d n sum 5050 例5 3募集慈善基金10000元 有若干人捐款 每输入一个人的捐款数后 计算机就输出当时的捐款总和 当某一次输入捐款数后 总和达到或超过10000元时 即宣告结束 输出最后的累加值 解题思路 设计一个循环结构 在其中输入捐款数 求出累加值 然后检查此时的累加值是否达到或超过预定值 如果达到了 就结束循环操作 includevoidmain floatamount sum 0 do scanf f 循环执行的条件 1000 1850 1500 2600 2500 1200 sum 10650 00 5 3用for语句实现循环 P119 5 3 1for语句的一般形式和执行过程5 3 2for循环程序举例 for语句不仅可以用于循环次数已经确定的情况 还可以用于循环次数不确定而只给出循环结束条件的情况for语句完全可以代替while语句 5 3 1for语句的一般形式和执行过程 P120 for语句的一般形式为for 表达式1 表达式2 表达式3 语句 设置初始条件 只执行一次 可以为零个 一个或多个变量设置初值执行 5 3 1for语句的一般形式和执行过程 P120 for语句的一般形式为for 表达式1 表达式2 表达式3 语句 循环条件表达式 用来判定是否继续循环 在每次执行循环体前先执行此表达式 决定是否继续执行循环 5 3 1for语句的一般形式和执行过程 P120 for语句的一般形式为for 表达式1 表达式2 表达式3 语句 作为循环的调整器 例如使循环变量增值 它是在执行完循环体后才进行的 for语句的执行过程 1 先求解表达式1 2 求解表达式2 若其值为真 执行循环体 然后执行下面第 3 步 若为假 则结束循环 转到第 5 步 3 求解表达式3 4 转回上面步骤 2 继续执行 5 循环结束 执行for语句下面的一个语句 表达式2 非0 真 0 假 求解表达式3 求解表达式1 语句 for i 1 i 100 i sum sum i 等价于i 1 while i 100 sum sum i i 用for语句更简单 方便 5 3 2for循环程序举例 例5 4在象棋的棋盘第1个格子中放1粒麦子 第2个格子中放2粒麦子 第3个格子中放4粒麦子 以后按此比例每一格加一倍 一直放到第64格 象棋的棋盘是8 8 64格 共放多少 P120 麦子总粒数 1 2 22 23 2631m3 1 42 108粒 includevoidmain doublep 1 t 1 v inti for i 1 i 64 i p p 2 t t p v t 1 42e8 printf total e n t printf volume e n v p是当前一个格子中麦子粒数 t是当前麦子总粒数 v是总体积 total 1 844674e 019volnme 1 299066e 011 includevoidmain doublep 1 t 1 v inti for i 1 i 64 i p p 2 t t p v t 1 42e8 printf total e n t printf volume e n v 改为i 1 i 64 i 会怎样 includevoidmain doublep 1 t 1 v inti for i 1 i 64 i p p 2 t t p v t 1 42e8 printf total e n t printf volume e n v 改为i 0 i 64 i 会怎样 例5 5人口增长预测 据2005年末统计 我国人口为130756万人 如果人口的年增长率为1 请计算到哪一年中国总人口超过15亿 解题思路 假设原来人口为p0 则一年后的人口为 p p0 1 r r是年增长率每算出一年的人口后就检查是否达到或超过15亿 如果未达到或超过 再计算下一年的人口 直到某一年的人口达到或超过15亿为止 includevoidmain doublep 1 30756e9 r 0 01 inty for y 2006 p 1 5e9 y p p 1 r printf year d p e n y 1 p 原来的值 1年后的值 year 2019 p 1 503007e 009 注意不是y 2019年达到15 03007亿人口 includevoidmain doublep 1 30756e9 r 0 01 inty for y 2006 p 1 5e9 y p p 1 r printf year d p e n y 1 p 计算1000年后的人口 y 3006 y 3006 p 2 767941e 013 3006年达到276794亿人口 includevoidmain doublep 1 30756e9 r 0 01 inty for y 2006 p 1 5e9 y p p 1 r printf year d p e n y 1 p 迭代公式 5 4循环的嵌套 P124 一个循环体内又包含另一个完整的循环结构 称为循环的嵌套内嵌的循环中还可以嵌套循环 这就是多层循环3种循环 while循环 do while循环和for循环 可以互相嵌套 5 5提前结束循环 5 5 1用break语句提前退出循环5 5 2用continue语句提前结束本次循环 P124 5 5 1用break语句提前退出循环 在执行循环语句时 在正常情况下只要满足给定的循环条件 就应当一次一次地执行循环体 直到不满足给定的循环条件为止 但是有些情况下 需要提前结束循环 P124 例5 6统计各班级学生的平均成绩 已知各班人数不等 但都不超过30人 编一个程序能处理人数不等的各班学生的平均成绩 解题思路 输入的成绩是负数时 表示本班数据已结束接收到一个负的分数时就提前结束循环用break语句实现提前结束循环 includevoidmain floatscore sum 0 ave inti n for i 1 i 31 i scanf f 负值 跳出循环 非负 累加 100 80 70 1 n 3 ave 90 00 break语句的一般形式为 break 只能用于循环语句和switch语句之中 而不能单独使用 5 5 2用continue语句提前结束本次循环 continue语句的一般形式为 continue 其作用为结束本次循环 即跳过循环体中下面尚未执行的语句 接着进行下一次是否执行循环的判断 P126 5 5 2用continue语句提前结束本次循环 continue语句和break语句的区别 continue语句只结束本次循环 而不是终止整个循环的执行break语句结束整个循环过程 不再判断执行循环的条件是否成立 P126 break语句 强行退出循环 while 表达式1 if 表达式2 break continue语句 只结束本次循环 while 表达式1 if 表达式2 continue continue语句 只结束本次循环 break语句 强行退出循环 例5 7输入一个班全体学生的成绩 把不及格的学生成绩输出 并求及格学生的平均成绩 解题思路 在进行循环中 检查学生的成绩 把其中不及格的成绩输出 然后跳过后面总成绩的累加和求平均成绩的语句用continu语句处理 includevoidmain floatscore sum 0 ave inti n 0 for i 1 i 6 i printf score scanf f 不及格 输出成绩 跳过下面语句 score 89 score 56 Fail 56score 76 score 58 Fail 58score 98 n 3ave 87 67 5 6几种循环的比较 P128 1 一般情况下 3种循环可以互相代替 2 在while和do while循环中 循环体应包含使循环趋于结束的语句 3 用while和do while循环时 循环变量初始化的操作应在while和do while语句之前完成 而for语句可以在表达式1中实现循环变量的初始化 5 7程序举例 P128 例5 8有一对兔子 出生后第3个月起每个月都生一对兔子 小兔子长到第3个月后每个月又生一对兔子 假设所有兔子都不死 问40个月的兔子总数为多少 解题思路 这是一个有趣的古典数学问题 可以从下表看出兔子繁殖的规律 每个月的兔子总数依次为1 1 2 3 5 8 13 是费波那西 Fibonacci 数列特点 第1 2两个数为1 1从第3个数开始 该数是其前面两个数之和 解题思路 这是一个有趣的古典数学问题 可以从下表看出兔子繁殖的规律 每个月的兔子总数依次为1 1 2 3 5 8 13 是费波那西 Fibonacci 数列特点 第1 2两个数为1 1从第3个数开始 该数是其前面两个数之和 includevoidmain longintf1 f2 inti f1 1 f2 1 for i 1 i 20 i printf 12ld 12ld f1 f2 if i 2 0 printf n f1 f1 f2 f2 f2 f1 控制一行输出的数据个数 在VC 中可用int型 例5 9有一个整数m 判断它是否素数 解题思路 所谓素数 或称质数 是指除了1和它本身以外 不能被任何整数整除的数例如17是素数 因为它不能被2到16间任一整数整除因此判断一个整数m是否素数 只需把m被2到m 1之间的每一个整数去除 如果都不能被整除 那末m就是一个素数 假 假 真 i i 1 输入m i 2 i 真 m被i整除 i 输出是素数 真 输出不是素数 假 include includevoidmain intm i k printf number scanf d number 17 17prime 例5 10译密码 为使电文保密 往往按一定规律将其转换成密码 收报人再按约定的规律将其译回原文 ABCDEFG WXYZ非字母字符保持原状不变输入一行字符 要求输出其相应的密码 解题思路 1 从字母A到V 只需将字母加上4就行例如 A 4就是 E 2 从字母W到Z 将字母加4 再减去26 W 4 26就是 A 解题思路 输入一个字符给字符变量c判定它是否字母 包括大小写 若不是字母 不改变c的值 若是字母 则使变量c的值改变为其后第4个字母如果新的c值范围不在字母范围内 应减去26 includevoidmain charc while c getchar n if c a China Glmre 5 8提高部分 5 8 1while和do while循环的比较5 8 2for语句的各种形式 P132 5 8 1while和do while循环的比较 凡是能用while循环处理的情况 都能用do while循环处理do while循环结构可以转换成while循环结构 P132 5 8 1while和do while循环的比较 P132 表达式 非0 真 0 假 循环体语句 表达式 非0 真 0 假 语句 语句 do while语句 while语句 5 8 1while和do while循环的比较 例5 11while和do while循环的比较以下两个程序 循环体是相同的程序 1 用while循环程序 2 用do while循环运行时 在有的情况下结果相同 而另一些情况下结果不同 请仔细分析 P132 程序 1 includevoidmain ints 0 i scanf d 程序 2 includevoidmain ints 0 i scanf d 1 s 55再运行一次 11 s 0 1 s 55再运行一次 11 s 11 当while后面的表达式的第一次

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论