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

下载本文档

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

文档简介

1 第六章循环结构程序设计 主讲福州大学数学与计算机学院韩老师E mail hxy 2 第六章循环结构程序设计 第一节引例第二节while语句第三节do while语句第四节for语句第五节循环的嵌套第六节break和continue语句 3 第一节引例 例1编程计算1 2 10 这是一个典型的循环结构程序 i从1开始每次增加1 然后累加到一个称之为累加器的变量中 累加操作当i 10时一直进行 main inti 1 sum 0 while i 10 sum sum i i printf d n sum 4 第二节while语句 格式 while 表达式 语句 功能 while语句用来实现 当型 循环执行过程 首先判断表达式 当表达式的值为非0时 反复执行while中的语句 5 第二节while语句 注意事项1 当条件满足时 执行一次 执行到 则返回while语句开始下一次 2 如果第一次条件就不满足 循环则一次都不作 直接结束 执行 后的语句 3 循环体中应有使循环趋向结束的语句 4 一些变量的赋值操作要在while的前面完成 5 循环体如果包含一个以上的语句 应用花括弧括起来 6 例2计算10 1 2 3 10main inti 1 longfac 1 while i 10 fac i i printf ld n fac 7 例3计算1 1 2 1 10main inti 1 floatsum 0 while i 10 sum sum 1 0 i i printf f n sum 8 例4计算1 1 2 1 3 1 9 1 10解法一 main inti 1 sign 1 floatsum 0 while i 10 sum sum 1 0 i sign i sign sign printf f n sum 9 解法二 main inti 1 floatsum 0 while i 10 sum sum 1 0 i sum sum 1 0 i 1 i 2 printf f n sum 10 解法三 main inti 1 floatsum 0 while i 10 if i 2 0 sum sum 1 0 i elsesum sum 1 0 i i printf f n sum 11 解法四 main inti 1 floatsum1 0 sum2 0 while i 10 sum1 sum1 1 0 i i i 2 i 2 while i 10 sum2 sum2 1 0 i i i 2 printf f n sum1 sum2 12 第三节do while语句 格式 do语句 while 表达式 功能 do while语句用来实现 直到型 循环执行过程 先无条件执行一次语句 然后再判断表达式 当表达式的值为非0时 返回 再执行该语句 一般 while结构和do while结构实现时可以相互转换 13 例5用do while语句计算1 2 10main inti 1 sum 0 do sum sum i i while i 10 printf d sum 14 例6 编写满足1 2 3 n 500中最大的n 并求其和的程序 main intn 0 sum 0 do n sum n while sum 500 printf n dsum d n n 1 sum n 15 第四节for语句 格式 for 表达式1 表达式2 表达式3 语句 执行过程 首先计算表达式1的值 给循环变量赋初值 然后测试表达式2的值 若其值非0 则执行循环体语句 执行循环体一次后再计算表达式3的值 自动修改循环变量的值 返回再测试表达式2的值 直到表达式2的值为0 假 退出循环 三个表达式都可以省略 16 第四节for语句 for语句的一般形式可以改写为如下的while循环的形式 表达式1 while 表达式2 语句 表达式3 17 第四节for语句 说明 for语句一般形式中的 表达式1 可以省略 不过若省略了 其后的分号不能省略 且应在for语句之前给循环变量赋初值 例如 i 1 for i 10 i sum sum i for i 1 i 10 i sum sum i 就相当于 18 第四节for语句 说明 2 如果表达式2省略 其后分号不能省 即不判断循环条件 循环无终止地执行下去 例如 for i 1 i sum sum i 就相当于 i 1 while 1 sum sum i i 19 第四节for语句 说明 3 表达式3也可以省略 但此时程序设计者应另外设法保证循环能正常结束 例如 for i 1 i 100 sum sum i i 相当于 for i 1 i 100 i sum sum i 20 第四节for语句 说明 4 可以省略表达式1和表达式3 只有表达式2 即只给循环条件 如 i 1 for i 100 sum sum i i 就相当于i 1 while i 100 sum sum i i 21 例7用for语句计算1 2 10main inti sum 0 for i 1 i 10 i sum sum i printf d sum main inti 1 sum 0 while i 10 sum sum i i printf d sum 22 例8计算10 1 2 3 10main inti longfac 1 for i 1 i 10 i fac i printf ld fac 23 例9求 n 即求1 2 3 20 include stdio h voidmain doubles 0 t 1 intn for n 1 n 20 n t t n s s t printf 1 2 3 20 e n s 24 第五节循环的嵌套 一个循环体内又包含另一个完整的循环结构 称为循环的嵌套 内嵌的循环中还可以嵌套循环 这就是多重循环 例如 for i 1 i 3 i for j 1 j 5 j 25 三种循环可以相互嵌套 如 while while while do while for do while while for 26 voidmain inti j k charspace for i 1 i 6 i for j 2 j i j printf c space for k 1 k 6 k printf c printf n 例10输出以下图形 27 voidmain inti j k for i 1 i 1 i for j 1 j 4 i j printf for k 1 k 2 i 1 k printf printf n 例11 输出以下图形 28 12436948121651015202561218243036714212835424981624324048566491827364554637281 程序 例12打印乘法 九九表 29 例12程序编写如下 main inti j for i 1 i 9 i for j 1 j i j printf 4d i j printf n 30 第六节break和continue语句 break语句 break语句用于循环语句和switch语句 作用是跳出循环和switch语句 提前结束循环 例如 while if break 31 main intm i scanf d 例13输入一个整数m 判断是否是素数 32 main intm i n 0 for m 101 m m printf 6d m n n 1 if n 10 0 printf n printf n 例14求100 200之间的全部素数 33 continue语句 continue语句类似于break语句 但不是退出循环 而是跳过本次循环体下面未执行的语句 接着执行下一次循环的迭代 如 while if continue 34 例15把100 200之间不能被3整除的数输出 include stdio h main intn i 0 for n 100 n 200 n if n 3 0 continue printf 6d n i if i 10 0 printf n printf n 35 例16使用continue语句示例main intn while 1 scanf d 36 例17用近似公式求e 1 1 1 1 2 1 n 分析 设term分别代表求和公式中的每一项 则第i项总可以用第i 1项推算出来 即term term i main inti n floate 1 0 term 1 0 scanf d 37 例18破译密码 按以下规律翻译密码 将每一个字母变成它后面的字母 如将A变成B Z变成A 非字母字符不变 作为电文结束标志 main charch while ch getchar if ch a 38 例19 公鸡每只5元 母鸡每只3元 小鸡3只一元 问一百元买一百只鸡有几种解法 枚举法 一一列举各种可能的情况并判断哪一种情况是符合要求的解 main intx y z for x 0 x 19 x for y 0 y 33 x y z 100 x y if z 3 0 39 例20 求fibonacci数列的前40个数 分析 设当前项为f 前一项为f1 前二项为f2 首先根据f1和f2推出f 再将f2作为f1 f作为f2 再推出f 如此一直递推下去 11235第一次f1 f2 f 第二次f1 f2 f 第三次f1 f2 f 40 递推法 是指在一个数的序列值中 下一项的值是在前一项的基础上推算出来的 即下一项对前一项有某种依赖关系 main inti longf f1 1 f2 1 printf n printf 12ld 12ld f1 f2 for i 3 i 40 i f f1 f2 printf 12ld f if i 4 0 printf n f1 f2 f2 f 41 对例20进行简化 只设两个变量f1和f2 递推过程如下 11235第一次f1 f2 f1 第二次f2 f1 f2 第三次f1 f2 f1 42 程序改变为如下 main inti longf1 1 f2 1 printf n for i 1 i 20 i printf 12ld 12ld f1 f2 f1 f1 f2 f2 f2 f1 if i 2 0 printf n 43 例21 用 4 1 1 3 1 5 1 7 求 的近似值 直到最后一项绝对值小于10 6为止 include math h voidmain ints floatn t pi t 1 pi 0 n 1 0 s 1 while fabs t 1e 6 pi pi t n n 2 s s t s n pi pi 4 printf pi 12 6f n pi 44 例22 求两个自然数的最大公约数 最小公倍数voidmain inta b p t scanf d d 45 例23 孙子定理亦称韩信点兵说 一个数用3除余2 用5除余3 用7除余2 求该数 voidmain inti 0 j 0 do i if i 3 2 46 例24 对输入的一正整数a a在1到9之间 求Sn a aa aaa aaa a 10个a 例a 3 则S 3 33 333 333 3voidmain inta i doublesn 0 tn scanf d 47 例25 打印100 1000之间所有的水仙花数 即其各位数字的立方之和等于其本身的数 例 153 1 3 5 3 3 3voidmain inti j k n printf sxhsis for n 100 n 1000 n i n 100 j n 10 i 10 k n 10 if i 100 j 10 k i i i j j j k k k printf 6d n printf n 48 例26 输出以下图形 voidmain inti j k m for i 1 i 1 m printf d m 49 例26 输出以下图形 for i 4 i 1 i printf n for j 1 j 1 m printf d m printf n 50 例27 用100元换成5元 1元 0 5元 共100张 且每种不少于1张 有多少种组合 voidmain inti j k sum 0 floatrbs 0 0 for i 1 i 100 i for j 1 j 100 j for k 1 k 100 k sum i j k rbs 5 i j 0 5 k if sum 100 51 为减少循环次数 事实上最多换11张5元 程序可以改进为 voidmain inti j for i 1 i 11 i for j 1 j 93 i j if 5 i j 0 5 100 i j 100 printf 5元 d 1元 d 0 5元 d n i j 100 i j 52 例28 用弦截法求方程的根 其方程是 x3 5x2 16x 80 0求解的方法是 1 令f x x3 5x2 16x 80 2 选取两个初值x1 x2 使f x1 f x2 异号 3 连接 x1 f x1 和 x2 f x2 两点 过这两点的直线与X轴的交点为x 用该点取代区间 x1 x2 的一个端点 使其相应的函数值与

温馨提示

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

评论

0/150

提交评论