C语言板书6循环.ppt_第1页
C语言板书6循环.ppt_第2页
C语言板书6循环.ppt_第3页
C语言板书6循环.ppt_第4页
C语言板书6循环.ppt_第5页
已阅读5页,还剩41页未读 继续免费阅读

下载本文档

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

文档简介

1 第六章循环程序设计 2 6 1概述 前面已介绍了顺序结构 选择结构 本章介绍循环结构 如 sum 1 2 3 100 实际问题 一组重复执行的语句 3 则用循环结构解决 C语言用四种形式循环 2 while语句 3 do while语句 4 for语句 1 if语句与goto语句 4 5 2goto语句及与if语句构成循环 1 goto语句 2 与if构成循环 例 求 main inti sum 0 形式 goto标号 功能 无条件转向标号处 标号 用标识符命名 5 i 1 loop if i 100 sum sum i i gotoloop printf d sum 运行结果如下 5050 6 main intsum 0 i 0 loop sum sum i i if i 100 gotoloop printf sum d sum 本例相当于当型循环 若改为直到型 7 5 3while语句 为了使程序的结构化功能强 应尽量少用goto语句 1 形式 while 表达式 语句 2 执行过程 先判断表达式的值 若 0 则执行其后面的语句 否则while执行完毕 专门的当型循环语句 while语句 8 3 流程图 将上述例子用while语句写出while i 100 sum i i 9 语句中应有使表达式 0的语句 否则会出现无限循环 死 循环 注 while后面的语句一般为复合语句 即 加 10 5 4do while语句 一种专门的 直到型 循环语句 2 执行过程 先执行语句 再判表达式的值 若 0 再执行语句 否则结束循环 3 流程 1 形式 do语句while 表达式 11 main inti sum 0 i 1 do sum sum i i while i 100 printf d sum 程序如下 12 while语句与do while语句的区别 当第一次执行时 若表达式 0时 则while语句与do while有所不同 do while执行一次后面的语句 而while不执行 13 5 5for语句 1 形式 首先计算表达式1 接着执行表达式2 若表达式2的值 0 则执行语句 接着计算表达式3 再判断表达式2的值 依此重复下去 直到表达式2的值 0 假 一种形式更为灵活的循环语句 2 执行过程 for 表达式1 表达式2 表达式3 语句 14 3 流程 计算表达式1 求表达式2值 语句 计算表达式3 结束for语句 0 假 0 真 15 用for语句写出上述例子 for用while代替的流程表达式1 while 表达式2 语句表达式3 for i 1 i 100 i sum i for语句完全可以用while代替 但for直观 简单 方便 16 4 for语句的几种特例 例 任意输入两个整数a b 求 main inti j a b sum 0 printf pleaseinputtwonumber n scanf a d b d 可以省略表达式1 但须保留分号 这时在for之前就得赋值给循环变量 17 if a b i b j a for i j i sum sum i printf nsum d sum 18 表达式2一般不可省略 否则为无限循环 相当于 while 1 sum sum i i 例 for i 1 i sum sum i 相当于条件永真 永不为0 若用while表示 19 表达式3亦可省略 但在循环体中须有语句修改循环变量 以使表达式2在某一时刻为0而正常结束循环 例 for sum 0 i 1 i 100 sum sum i i 20 若同时省略表达式1 表达式3 则相当于while 表达式2 语句 相当于while i 100 sum i i 例 for i 100 sum i i 21 三个表达式均省略即for 语句则相当于while 1 语句 表达式1 表达式3可以是逗号表达式 以使循环变量值在修改时可以对其它变量赋值 如for sum 0 i 1 i 100 i i sum 0 for i 1 i 100 i i 2 22 表达式2可以是关系表达式 也可以是数值表达式或字符表达式 只要值 0 即执行循环体 例 for i 0 c getchar n i c 23 5 6循环的嵌套 与其它语言一样 当循环体中又包含了另一个完整的循环语句时 嵌套 C有三种循环语句 均可以相互嵌套 while while 24 for while do while 25 均为正确的嵌套 但 while while for for 会理解为正确的形式 但要注意语句的包含关系 26 5 7几种循环的比较 1 对于同一问题 四种循环可相互替代 但不提倡用goto 2 for循环功能强于while do while 但若不是明显地给出循环变量初终值 或修改条件 则应用while或do while 以增强程序的结构化和可读性 3 要防止无限循环 死循环 4 循环过程中 为了结束本次循环或跳出整个循环 分别要用到continue和break语句 27 5 8break语句和contiune语句 问题 计算圆的面积 r2 半径取1 2 3 4 当面积 100时结束 for r 1 r area 3 14 r r if area 100 break printf f area 5 8 1break语句 28 从结构化程序要求出发 用break 退出循环 进入for语句的下一条语句 注 break只能用于循环语句和switch语句 29 5 8 2continue语句 main intn for n 100 n 200 n if n 3 0 printf d n 问题 编写程序 打印100 200中不能被3整除的数 30 换一种方式 main intn for n 100 n 200 n if n 3 0 continue printf d n continue语句起了结束本次循环的作用 31 5 9程序举例 例1 求Fibonacci数例 1 1 2 3 5 8 前40个数 程序要点 每输出4个数时换行 f1 f1 f2 f2 f1 f2 交替的结果正好为一序列 规律 F1 1 F2 1Fn Fn 1 Fn 2 n 2 32 程序如下 main longintf1 f2 inti f1 1 f2 1 for i 1 i 20 i printf 12ld 12ld f1 f2 33 if i 2 0 printf n f1 f1 f2 f2 f2 f1 34 运行结果为 153423315971094675025514229352457824157817 18553772584177111211393832040570288739088169 213896104181286571964181346269922746563245986 321144987676546368317811217830914930352102334155 35 判一个数m是否为素数的方法 每打印10个数 换一次行 当用2 3 的整数去除它时均不能除 尽 则为素数 程序如下 includemath hmain 例2 求100 200的素数 36 intm k i n 0 for m 101 m k 1 printf d m n n 1 37 101103107109113127131137139149151157163167173179181191193197199 运行结果如下 38 课堂练习 给小学生出加法运算题 输入两个加数一个和 如果对了表扬一下 错了给出正确结果 做完10次退出 39 n 1 while 1 scanf d d d 小学生做加法 40 百鸡百钱问题 公鸡五个铜板一只 母鸡三个铜板一只 小鸡一个铜板三只 一百个铜板要买一百只鸡 且包括三种鸡 问有几种方案 列出每种方案 41 includemain inti j k n n 0 for i 1 i 18 i for j 1 j 31 j k 100 i j if 15 i 9 j k 300 n printf n d cock d hen d chick d n n i j k 42 以下程序根据n的值打印2n 1行图案 运行后当输入4给变量n时 将打印如下图案 43 for i 1 i n i for j 1 j 2 n i j putchar for j 1 j 2 i 1 j putchar printf n for i 1 i n 1 i for j 1 j 2 n i 1 j putchar printf n 44 例 假设口袋里放着12个球 其中3个红的 3个白的 6个黑的 从中任取8个球 问有多少种不同的取法 用a表示红球 b表示白球 c表示黑球 请完善程序 45 for red 0 red 2 限制黑球6个 black 8 red white count for k 0 k red k putchar a for k

温馨提示

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

评论

0/150

提交评论