C语言程序设计PPT课件____第6章.ppt_第1页
C语言程序设计PPT课件____第6章.ppt_第2页
C语言程序设计PPT课件____第6章.ppt_第3页
C语言程序设计PPT课件____第6章.ppt_第4页
C语言程序设计PPT课件____第6章.ppt_第5页
已阅读5页,还剩32页未读 继续免费阅读

下载本文档

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

文档简介

第六章循环控制 goto语句while语句do while语句for语句break语句continue语句练习 6 1概述 循环 反复执行称为 循环体 的程序段 循环控制常用于数学迭代 对象遍历等问题的求解 几乎所有实用程序都包含循环 C语言中用如下语句实现循环 1 用goto语句和if语句构成循环 2 用while语句 3 用do while语句 4 用for语句 6 2goto语句 一般形式 goto语句标号作用 无条件转向 语句标号 处执行 语句标号 是一个标识符 它表示程序指令的地址 结构化程序设计方法主张限制使用goto语句 goto语句有两种用途 一是与if语句一起构成循环结构 另一是从循环体中跳转到循环体外 例6 1 用if语句和goto语句构成循环 求 main inti sum 0 i 1 loop if i 100 标号表示程序指令的地址 当i 100时 执行加法 sum sum i i gotoloop 无条件转向标号loop处的指令 printf d sum 6 3while语句 一般形式 while 表达式 语句作用 实现 当型 循环 当 表达式 非0 真 时 执行while语句中的内嵌 语句 语句 是被循环执行的程序 称为 循环体 特点 先判 表达式 条件 后执行语句 循环体如果包含一个以上的语句 应该以复合语句形式出现 在循环体中应有使循环趋向于结束的语句 例6 2 流程图 main inti sum 0 为循环赋初值 i 1 whie i 100 当型 循环 sum sum i i 使循环趋于结束 printf d sum 例6 3 从任意n个实数中选出最大数和最小数 main intn i 1 floatmax min x printf inputn x scanf d f 例6 4 任意输入两个正整数 求它们的最大公约数 main longm n r a b printf inputm n scanf ld ld main longm n r a b printf inputm n scanf ld ld 6 4do while语句 一般形式 do语句while 表达式 特点 直到型 循环结构 先执行一次 语句 后判 表达式 当 表达式 非0 再执行 语句 直到 表达式 为0 循环结束 例6 5 用do while语句求 main inti sum 0 i 1 do sum sum i i while i100 这两者是等同的 2 一般情况下 同一个问题 既可以用while循环处理 也可以用do while循环处理 例6 6 从键盘上输入一个整数 判断其是几位数 main longm a intn 0 printf 请输入一个正整数 scanf ld 求e的近似值 直到某一项的值小于或等于10 7为止 main intn floatsum t m n 1 sum 1 m 1 do t 1 m sum t n m m n while t 1e 7 printf e f n sum getch 例6 7 6 5for语句 for语句常用于循环次数已知的循环控制 也可以用于循环次数不确定而只给出循环结束条件的情况 它完全可以代替while语句 一般形式 for 表达式1 表达式2 表达式3 语句执行过程 1 求表达式1 2 求表达式2 若为 真 执行 语句 若为假 转第 5 步 3 求表达式3 4 转第 2 步 5 执行for语句下面的语句 循环初始条件 判别循环条件 修改循环条件 for i 1 i 100 i sum sum i 这里 循环条件由变量i设定 变量i称为 循环变量 这是for语句的典型用法 已知循环次数 本例100次 表达式1 循环初始条件 i 1 表达式2 循环条件 i 100 表达式3 修改循环条件 i 注 for循环中 表达式1仅求解一次 执行循环体后才求解表达式3 先判断后执行 例 用for语句 main inti sum 0 for i 1 i 100 i sum sum i printf d n sum 上述for语句也可以用如下while语句表示 i 1 while i 100 sum sum i i 几点说明for语句中的表达式1 可以给循环变量赋初值 亦可以是与循环变量无关的其它表达式 甚至表达式1可以省略 若省略 则应在for语句前对循环变量赋初值 注意 表达式1省略时 其后的分号不能省略 此处的分号不是语句的一部分 而是表达式的分隔符 在for语句中的表达式中可以使用逗号表达式 故不用逗号分隔表达式 例 sum 0 for i 1 i 100 i sum i 或 i 1 for sum 0 i 100 i sum i 或 for i 1 sum 0 i 100 i sum i 或 i 1 sum 0 for i 100 i sum i 2 关于表达式3 可以用来改变循环变量的值 也可以是与循环变量的无关的其它表达式 甚至可将循环体中的语句放在表达式3的位置上 表达式3也可以省略 程序设计者必须保证循环能正常结束 例 i 0 for sum 0 i 100 sum i i 或 sum 0 for i 1 i 100 sum i i 或 sum 0 for i 1 i 100 sum i i 3 表达式1与表达式3可以同时省略 只有表达式2 即只给出循环条件 例 s 1 i 1 for i 10 s s i i s 1 i 1 while i 10 s i i 在这种情况下 for与while语句完全相同 可见 for语句比while语句功能强大 4 关于表达式2 作为循环的判断条件 一般为关系表达式或逻辑表达式 但亦可以是数值表达式或字符表达式 例 sum 0 for i 1 i 100 i sum i 或 sum 0 for i 100 i i sum i 5 表达式2也可以省略 此时 系统不再判断循环条件 认为表达式2的值始终为真 即循环条件始终成立 循环将出现死循环 程序设计者必须设法保证循环能正常结束 例 sum 0 for i 1 i sum i 或 sum 0 i 1 for sum i 此为死循环 i 1 sum 0 for sum i i if i 100 break 例6 8 求s 1 2 3 n 其中n小于30 main longs t inti n printf inputn scanf d 例6 9 求Fibonacci数列的前40项 每行输出4项 main longt1 t2 t3 inti t1 t2 1 printf 10ld 10ld t1 t2 for i 3 i 40 i t3 t1 t2 printf 10ld t3 if i 4 0 printf n t1 t2 t2 t3 getch 例6 10 求Fibonacci数列的前40项 每行输出4项 main longt1 t2 inti t1 t2 1 for i 1 i 20 i printf 10ld 10ld t1 t2 if i 2 0 printf n t1 t1 t2 t2 t1 t2 getch 6 6循环的嵌套 循环嵌套 一个循环 称为 外循环 的循环体内包含另一个循环 称为 内循环 内循环中还可以包含循环 形成多层循环 循环嵌套的层数理论上无限制 三种循环 while循环 do while循环 for循环 可以互相嵌套 例 1 2 while do while 嵌套 while dowhile 3 4 for while 5 6 for do while 嵌套 嵌套 嵌套 嵌套 for do while for while 例6 11 打印九九乘法表 main inti j for i 1 i 9 i for j 1 j i j printf d d 2d i j i j printf n getch 例6 12 将1元钱兑换成1分 2分 5分的硬币 若每种面值的硬币都不得少于一个 问有几种不同的兑换方法 main inti j n 0 for i 1 i0 n printf n d n n getch 6 8break语句和continue语句 一 break语句作用 跳出所在的多分支switch语句 跳出所在的whiledo whilefor循环语句 提前结束循环 例 definePI3 14main intr floatarea for r 1 r100 break printf d 6 2f n r area printf d 6 2f n r area 当r 6时 area 100 执行break语句 提前结束循环 不再计算r 7 10的area 运行结果 13 14212 57328 27450 27578 546113 107153 948201 069254 4710314 16 二 continue语句作用 提前结束本次循环体的执行 接着进行下一次循环条件的判别 例6 13 把100 200之间不能被3整除的数输出 main intn for n 100 n 200 n if n 3 0 continue printf d n 当n能被3整除时 执行continue语句 结束执行本次循环的循环体 即跳过printf语句 三 break语句和continue语句的区别while 表达式1 while 表达式1 if 表达式2 break if 表达式2 continue break语句跳出循环continue语句结束本次循环体的执行 进入下一次循环 6 9程序举例 例6 13 用以下公式计算 的值 直到最后一项的绝对值小于1E 6为止 算法分析 1 每项的分母 等于前一项分母加2 用n n 2实现 n的初值为1 2 每项的符号交替变化 用s s实现 s的初值为 1 第一项为正 3 根据1和2 每一项的值t s n 第一项的值为1 include math h main 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 10 6f n pi 运行结果 pi 3 141594 练习 1 猴子吃桃问题 猴子摘了一堆桃 第一天吃了一半 还嫌不过瘾 又吃了一个 第二天又吃了剩下的一半零一个 以后每天如此 到第10天 只剩下一个桃子了 问最初有多少个桃子 2 古印度国王要褒奖他的聪明能干的宰相达依尔 国际象棋的发明者 问他要什么 达依尔回答 陛下只要在棋盘的第一个格子中放1粒麦子 在第二个格子中放2粒麦子 在第三个格子中放4粒麦子 以后每个格子中的麦粒数都是前一格的2倍 如此放满64格 我就心满意足了 国王想 这不难办到 但是将全印度的麦子都用完了 还是不够 计算应需多少麦子 1立方米麦子约为1 42 108粒 3 编写程序求出具有下列性质的四位数 前两位数与后两位数相加 所得和的平方刚好等于原来的四位数 例如 3025 30 25 24 编写程序求出所有的水仙花数 所谓水仙花数是这样的三位数 它的各位数字的立方和就等于该数本身 例如 153 13 53 335 用公式 求的近似值 直到最后一项的绝对值小于10 6为止 6 判断一个正整数m是否是素数 7 求100 200之间的所有素数 要求每行输出8个素数 8 用牛顿迭代法求方程2x3 4x2 3x 6 0

温馨提示

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

评论

0/150

提交评论