C语言 5(5.6 双重循环).ppt

上传人:资****亨 文档编号:126968359 上传时间:2020-03-29 格式:PPT 页数:53 大小:770.50KB
返回 下载 相关 举报
C语言 5(5.6 双重循环).ppt_第1页
第1页 / 共53页
C语言 5(5.6 双重循环).ppt_第2页
第2页 / 共53页
C语言 5(5.6 双重循环).ppt_第3页
第3页 / 共53页
C语言 5(5.6 双重循环).ppt_第4页
第4页 / 共53页
C语言 5(5.6 双重循环).ppt_第5页
第5页 / 共53页
点击查看更多>>
资源描述

《C语言 5(5.6 双重循环).ppt》由会员分享,可在线阅读,更多相关《C语言 5(5.6 双重循环).ppt(53页珍藏版)》请在金锄头文库上搜索。

1、循环结构回顾 2 循环控制 循环 就是在给定的条件成立时反复执行某一程序段 被反复执行的程序段称为循环体 在C语言中可以用以下语句来实现循环 1 用while语句 2 用do while语句 3 用for语句 3 1 while语句 while 表达式 循环体 循环控制 4 例 ch5 01 c 求1 2 3 4 5 100 includemain inti sum 0 i 1 while i 100 sum sum i i printf d sum 循环初值 循环终值 循环变量增值 5 2 do while语句 do循环体 while 表达式 循环控制 6 例 ch5 01 c 求1 2 3

2、 4 5 100 includemain inti sum 0 i 1 do sum i i while i 100 printf d sum 7 3 for语句 非零 零 循环控制 for 表达式1 表达式2 表达式3 循环体sum 0 for i 1 i 100 i sum sum i 5 6双重循环控制 9 5 6循环的嵌套 三种循环可互相嵌套 层数不限外层循环可包含两个以上内循环嵌套循环的执行流程嵌套循环的跳转禁止 从外层跳入内层跳入同层的另一循环 1 while while 2 do do while while 3 while do while 10 当外层循环结构每执行一次循环时

3、 内层循环结构在一般情况下要从循环的开始到循环的正常结束从头到尾执行一遍 例1 在内层循环结构中使用break语句可以提前结束本次内层循环结构的执行 而不影响外层循环结构的继续执行 例2 如果程序因某种原因需要从内层循环体跳出整个循环结构 此时才可考虑使用goto语句 例3 对于并列的循环结构 控制循环执行的变量名字可以相同 在嵌套循环结构中 内 外层控制循环执行的变量名字不能相同 例4 对于嵌套循环结构的几点说明 11 例1 main inti j for i 0 i 3 i for j 1 j 4 j printf d j printf n 运行后 输出 123412341234 12 例

4、2 main inti j for i 0 i 3 i for j 1 j 4 j printf d j if j 3 0 break printf n 运行后 输出 123123123 13 例3 main inti j for i 0 i 3 i for j 1 j 4 j printf d j if j 3 gotol printf n l 运行后 输出 123 14 例4 main inti j for i 0 i 3 i printf d i printf n for i 1 i 4 i printf d i 运行后 输出 012 1234 15 分析 求累加和ss 0for k 1

5、 k n k 求tks s tk 求累乘积tk k tk 1for i 1 i k i tk tk i main inti k longs t printf nInputn scanf d Inputn 5 s 153 例 ch5 07 c 求1 2 n 内外层循环控制变量不要同名 16 main inti k longs t printf nInputn scanf d n 3skk 3外循tii k内循 Inputn 3 s 9 17 main inti k longs t printf nInputn scanf d Inputn 5 1 2 5 153 例 ch5 07 c 求1 2

6、n 18 main inti k longs t printf nInputn scanf d Inputn 5 1 2 5 153 例 ch5 07 c 求1 2 n 19 1 4 3 2 20 例 ch5 08 c 循环嵌套 输出九九表 21 22 includemain inti j for i 1 i 9 i printf 4d i printf n n for i 1 i 9 i for j 1 j i j printf 4d i j printf n 23 分析 行的控制i 1 9 的个数j与当前行的关系 j 2 i 1 前面的空格k与行的关系 开始时 第一行有8个空格每多一行 少

7、一个空格k 9 iwhile i 9 for k 1 k 9 i k 输出空格 for j 1 j 2 i 1 j 输出 24 main inti j k for i 1 i 9 i for k 1 k 9 i k printf for j 1 j 2 i 1 j printf printf n 25 1i控制行 i1 9空格数 9 i121j控制列 第i行左边 1 i12321右边 i 1 1 12345678987654321 例 编程输出下面的数字金字塔 1到9 26 ch5 09 c main inti j k m for i 1 i0 j 输出i 1到1 printf d j pri

8、ntf n 27 5 7循环程序设计的问题 写循环 先要发现循环 注意计算中的重复性动作 引进循环可能统一描述和处理 重复动作的常见例子 累积一批可按规律算出的数据 如累加等 反复从一个结果算出下一结果 递推等 见教材P71例5 9 对一批数据做同样的加工处理 28 写循环结构时要考虑和解决的问题 循环涉及哪些变量 引进什么临时性变量 这些变量在循环正式开始前应给什么初值 循环如何开始 每次循环中变量的值应如何改变 什么情况下继续循环 什么情况下终止 循环终止后如何得到所需结果 29 循环中的几种变量 循环中常出现几类变量 了解这些有助于思考和分析 这也是写循环程序的经验总结 1 循环控制变量

9、 循环变量 循环前设初值 循环递增 递减 达到 超过界限时循环结束 控制循环的进行 结束 for中常有这类变量 for n 0 n 10 n for n 2 n 52 n 4 30 2 累积变量 循环中常用 或 等更新 初值常用运算的单位元 加用0 乘用1为初值 循环结束时变量终值被作为循环计算结果 3 递推变量 前两类变量的推广形式 复杂循环常用几个协同的变量 每次由一个 几个变量推出一个新值 其余依次更新 对变量x1 x2 x3 循环体可能有序列 x1 x0 x2 x1 x3 x1 x2 31 本章重点 三种循环语句while do while和for建立循环通常有以下情况 1 给定次数

10、for比较适用for i 1 i a c A c Z 32 5 8程序举例 例 用 4 1 1 3 1 5 1 7 的公式求 的近似值 直到最后一项的绝对值小于10 6为止 include math h main ints floatn t pi t 1 pi 0 n 1 0 s 1 while fabs t 1 0e 6 pi pi t n n 2 s s t s n pi pi 4 printf pi 10 6f n pi 33 方法一 数列是正 负相间的 在这里可用一个 开关 变量t来解决符号的问题 main floats 0 intt 1 i for i 1 i 101 i s 1 t

11、 i t t printf s f n s 例 求s 1 1 2 1 3 1 4 1 99 1 100 34 方法二 分别求出正项和s1 奇数倒数 与负项和s2 偶数倒数 则s s1 s2 main floats s1 0 s2 0 inti for i 1 i 101 i 2 s1 1 0 i s2 1 0 i 1 s s1 s2 printf s f n s 35 例 输入若干字母 将它们变成其后的第四个字母 A E W A 非字母字符忽略 思路 1 建立循环 循环结束以输入回车符为准while c getchar n 2 判断输入是否是字符 否则忽略if c a 4 若变换后超出z时 要

12、轮回 If c Z c z c c 26 A Z a z 36 include stdio h main charc while c getchar n if c a 37 本例还是要考虑每行的空格数 和星号数问题 但要关注空格数与星号数在增加到一定的时候又要减少的规律 例 用循环语句显示下面的图案 38 includemain inti j k for i 2 i 2 i for j 1 j 18 fabs i j printf for k 1 k 5 2 fabs i k printf printf n 注意初 终值从 2到2的目的 for i 0 i 4 i for j 0 j 20 i

13、 j printf 空格递减 for k 0 k 2 i 1 k printf 星号递增 39 例 汽车里程表上的读数是95859 7小时之后里程表的读数是一个对称数 最大是5位数 问汽车的速度 是一个整数 解题思路 检查所有的在95859到99999之间的对称数 如果它与95859的差能被7整除 则商是速度 第一种算法 40 main longi a b c e d flaotf g i 95859 while i 99999 a i 10000 b i a 10000 1000 c i a 10000 b 1000 100 d i a 10000 b 1000 c 100 10 e i a

14、 10000 b 1000 c 100 d 10 if a e 该程序需要执行循环99999 95859次 41 第二种算法 main longi distance a b c d fori 1 i 200 i distance 95859 i 7 a distance 10000b distance a 10000 1000 c distance a 10000 b 1000 100 d distance a 10000 b 1000 c 100 10 e distance a 10000 b 1000 c 100 d 10 if a e and b d printf Thespeedis

15、d i 循环次数为200 20 42 第三种算法 main longi j distance speed real for i 6 i 9 i for j 0 j 9 j distance 90000 i 1000 j 100 i 10 9 if distanc 7 0 printf Thespeedis d distance 7 distance distance 95959if distance 7 0 printf Thespeedis d distance 7 该程序需要循环 9 6 10 1次 43 分析 1 因为新出现的数 dcbcd 是 个位数字 d 与万位数字 十位数字 c 与

16、千位数字相同 而百位数字 b 只能是 表示万位和千位的变量a取值范围为 95 99 所以 要将a分隔出的十位数字和个位数字分别赋予d和c 2 约束条件是 公里数对称且车速为整数 注意 95859超过了整型量的范围 应使用长整型量 44 45 main inta b c d n v longintm for a 95 a0 gotoloop loop printf v dkm hm ldkm n v m 46 在本例这样的情况下 从内循环体直接使用goto语句跳出整个循环结构 收到了事半功倍的效果 但我们再次强调 要限制 最好不使用goto语句 思考 1 若将if语句后goto语句改为break语句 结果如何 2 若将printf v dm ld n v m 直接放在if语句后 结果又如何 47 5 9课堂练习 百钱买百鸡 鸡翁1 钱值5 鸡母1 钱值3 鸡雏3 钱值1 何以百钱买百鸡 main intx y z for x 1to20 for y 1to33 if x 5 y 3 100 x y 3 0 100 printf x d y d z d x y 100 x y 48 打印出

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 高等教育 > 大学课件

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号