循环结构的语句及流程.ppt

上传人:za****8 文档编号:6366386 上传时间:2020-02-24 格式:PPT 页数:36 大小:752.51KB
返回 下载 相关 举报
循环结构的语句及流程.ppt_第1页
第1页 / 共36页
循环结构的语句及流程.ppt_第2页
第2页 / 共36页
循环结构的语句及流程.ppt_第3页
第3页 / 共36页
点击查看更多>>
资源描述
布置作业 书面练习 P113 P114习题准备上机题目 实验报告上 实验五 实验六要求画出程序流图 上机实验 实现实验五 实验六上交作业下机时班长收齐程序流图上交 程序设计方法 第5章循环结构的程序设计 问题1 假如全班41人 欲从键盘上输入每人的数学成绩 然后计算出平均成绩 问题2 编程计算n 这些都是重复计算的问题 需要由循环结构来解决 C提供了以下4种重复计算的结构 goto标号while 表达式 语句do语句while 表达式 for 表达式1 表达式2 表达式3 语句 goto语句及用goto构成循环 格式1 gotolabel 其中 label是语句标号 它命名的规则同变量名 功能 使程序无条件地转向标号为label的语句去执行 可以用if goto语句构成循环 如 解上述问题1 include defineN41main c501 c inti 1 floatmath avg 0 loop printf 输入数学成绩 d i scanf f 程序实现 说明 1 标号不必进行类型说明 2 程序中的任何一个语句均可带上标号 但标号必须以冒号结束 3 不提倡使用goto语句 循环体 循环结构的语句及流程控制 格式2 while 表达式 语句功能 当表达式的值非0时 执行语句 该语句一般是复合语句 被称之为循环体 例 解问题2 求n 的值 需要定义的变量 mul 存放累乘积 i 计数 n 程序 c502 c includemain inti 1 n longmul 1 printf nInputn scanf d mul i 说明 循环体可以是单个语句或复合语句while语句前应有为测试表达式中的循环控制变量赋初值的语句 以确保循环的正常开始 循环体内应有改变循环控制变量的语句 以确保循环进行有限次后正常结束 如 inti 1 while i 100 sum sum 1 死循环 while循环的特点是先判断后执行 故循环有可能一次都不被执行 如 inti 3 while i 3 printf i d n i 例2 求整数a和b的最小公倍数 算法流图如下 程序如下 C503 cc503 1 c includemain inta b i m n scanf d d includemain inta b i scanf d d 循环结构的语句及流程控制 格式3 do语句while 表达式 功能 先执行语句 单个语句或复合语句 被称之为循环体 当表达式的值非0时 重复执行该语句 直到表达式的值为0 例 sum 1 2 3 N c604 c include defineN100main inti 1 sum 0 do sum sum i i while i N printf nsum d sum includemain inti 1 sum 0 N scanf d 例子 需要定义的变量 e 存放累加值 i 计数 n 存放计算阶乘值 计算 e 1 1 1 1 2 1 100 程序 c505 c includevoidmain inti 1 doublee n e n 1 0 do n n i e e 1 n while i 100 printf ne f e includemain inti 1 doublet e 1 0 intn 1 do n n i t 1 n e e t while t 1e 7 printf ne f e 循环结构 for循环比较灵活 既可用于确定次数的循环 也可用于不确定次数的循环其执行流程描述如下 格式4 for 表达式1 表达式2 表达式3 语句常用形式 for 循环变量初值 循环条件 循环变量增值 语句 程序示例 例 计算sum 1 2 3 100 c506 c voidmain inti sum 0 for i 1 i 100 i sum i printf nsum d sum 例 计算 e 1 1 1 1 2 1 100 c507 c voidmain inti doublee 1 0 n 1 0 for i 1 i 100 i n n i e e 1 0 n printf ne f e 程序设计的三种方法 枚举法就是逐一列举出可能解的各个元素 并加以判断 直到求得所需要的解 常用在排列 组合 数据分类 信息检索 多解方程的求解上 归纳法是从大量的特殊性中总结出规律性或一般性的结论 在程序设计上主要表现为递归和迭代 数列和级数求和 抽象法自顶向下 逐步求精 枚举问题 求1000 2000之间的素数打印出水仙花数 所谓水仙花数是指一个3位数 其各位数的立方之和等于该数本身 如 153 1 1 1 5 5 5 3 3 3 百钱买百鸡问题 大公鸡5钱一只 母鸡3钱一只 雏鸡一钱买3只 有几种买法 求出所有解 两个乒乓球队进行比赛 各出三人甲队为A B C 乙队为X Y Z 已经抽签决定了比赛名单 有人向队员打听比赛对阵情况 A说他不和X比 C说他不和X Z比 编程序找出三对赛手的名单 例1 求1000 2000之间的素数 需要的变量说明 i 1000 2000 j 2 ik 0 10 是素数1 不是素数 参考程序c510 c includemain inti j k m printf 1000 2000之间的素数 n for i 1000 i 2000 i k 0 用于标识是否素数 m sqrt i for j 2 j m j if i j 0 k 1 break if k 0 printf 8d i 例2 打印出所有的 水仙花数 所谓 水仙花数 是指一个3位数 其各位数字的立方和等于该数本身 例如 153是一个 水仙花数 因为153 13 53 33 参考程序c514 c includevoidmain inti j k m for m 100 m 1000 m i m 100 j m 10 i 10 m 100 10 k m 10 if m i i i j j j k k k printf 4d m includevoidmain inti j kfor i 1 i 9 i for j 0 j 9 j for k 0 k 9 k m i i i j j j k k k n i 100 j 10 kif m n printf 4d n 例3 百钱买百鸡问题 大公鸡5钱一只 母鸡3钱一只 雏鸡一钱买3只 有几种买法 求出所有解 设 x为大公鸡数 y为母鸡数 z为雏鸡数 参考程序c511 c includevoidmain intx y z printf n大公鸡母鸡雏鸡 for x 0 x 20 x for y 0 y 34 y z 100 x y if z 3 0 continue if 5 x 3 y z 3 100 printf n 8d 8d 8d x y z 示例4 两个乒乓球队进行比赛 各出三人甲队为A B C 乙队为X Y Z三人 已经抽签决定比赛名单 有人向队员打听比赛的名单 A说他不和X比 C说他不和X Z比 编程序找出三对赛手的名单 A Y ZB X ZC Y 参考程序c615 c includevoidmain charA B C Y for A Y A Z A for B X B Z B if A B if A C 归纳问题 用 4 1 1 3 1 5 1 7 近似公式计算 的值直到最后一项1 n 10 6Fibonacci数列这是一个古典数学问题 一对兔子从它出生后第3个月起 每个月都生一对小兔子 小兔子3个月后又生一对小兔子 假设兔子都不死 求每个月的兔子对数 该数列为 1123581321 即从第3项开始 其该项是前两项之和 用牛顿迭代法求ax3 bx2 cx d 0 x在1附近的实根 猴子第一天摘下若干桃子 当即吃了一半 还不过瘾 又多吃了一个 第二天早上又将剩下的桃子吃掉了一半 又多吃了一个 以后每天早上都吃了前一天剩下的一半零一个 到第10天早上再想吃时 发现只剩下一个桃子了 求第一天共摘多少个桃子 例子 例1 用 4 1 1 3 1 5 1 7 近似公式计算 的值直到最后一项 10 6 需要定义如下变量 n 项计数 s 确定各项的符号 pi 存放求和的值 4 1 1 3 1 5 1 7 includevoidmain ints 1 确定各项的符号 floatn pi 0 n 项计数pi 和值 for n 0 1 2 n 1 1e 6 n pi pi s 1 2 n 1 s s pi pi 4 printf npi 10 6f pi 例2 求Fibonacci数列的前40个数 这是一个古典数学问题 一对兔子从它出生后第3个月起 每个月都生一对小兔子 小兔子3个月后又生一对小兔子 假设兔子都不死 求每个月的兔子对数 该数列为 1123581321 即从第3项开始 其该项是前两项之和 需要定义的变量 i 计数 f1 计算前项值 f2 计算下项值 参考程序 c509 c includevoidmain inti longf1 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 示例3 f x ax3 bx2 cx df1 x 3ax2 2bx c需要定义的量 系数a b c d 存放函数值f f1 近似根xk xk1 关键3要素 初值 迭代公式 精度要求 例3 用牛顿迭代法求ax3 bx2 cx d 0 x在1附近的实根 迭代公式 xk 1 xk f xk f xk 迭代到 xk 1 xk 10 5 参考程序 c512 c include includevoidmain floata b c d xk 1 xk1 f f1 printf ninputa b c d scanf f f f f 示例4 猴子第一天摘下若干桃子 当即吃了一半 还不过瘾 又多吃了一个 第二天早上又将剩下的桃子吃掉了一半 又多吃了一个 以后每天早上都吃了前一天剩下的一半零一个 到第10天早上再想吃时 发现只剩下一个桃子了 求第一天共摘多少个桃子 分析 假设s为剩下的 则s 1为前一天的一半 而2 s 1 为前一天的总个数 依次类推 10天前的桃子数即可算出 includevoidmain c513 c ints 1 i 9 for i 1 i s s 1 2 printf s d n s 输出格式处理 输出以下图案c616 c 参考程序 includevoidmain inti j for i 1 i0 i for j 1 j 40 i j printf for j 1 j 2 i 1 j printf printf n 本章小结 本章主要介绍了几种循环结构的形式及其一般应用 程序设计的基本方法 应该注意 while 表达式 语句do语句while 表达式 for 表达式1 表达式2 表达式3 语句语句即是循环体 可以是单个语句或多个语句组成的复合语句 以 括住 也可以自身嵌套的循环语句或另一结构的循环语句 称之为多重循环 各表达式的作用 break continue语句在循环结构中的作用及应用程序设计的三种基本方法及应用
展开阅读全文
相关资源
相关搜索

当前位置:首页 > 图纸专区 > 课件教案


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!