谢丽聪老师C语言课件-6循环控制.ppt

上传人:自*** 文档编号:127477910 上传时间:2020-04-02 格式:PPT 页数:61 大小:572.50KB
返回 下载 相关 举报
谢丽聪老师C语言课件-6循环控制.ppt_第1页
第1页 / 共61页
谢丽聪老师C语言课件-6循环控制.ppt_第2页
第2页 / 共61页
谢丽聪老师C语言课件-6循环控制.ppt_第3页
第3页 / 共61页
谢丽聪老师C语言课件-6循环控制.ppt_第4页
第4页 / 共61页
谢丽聪老师C语言课件-6循环控制.ppt_第5页
第5页 / 共61页
点击查看更多>>
资源描述

《谢丽聪老师C语言课件-6循环控制.ppt》由会员分享,可在线阅读,更多相关《谢丽聪老师C语言课件-6循环控制.ppt(61页珍藏版)》请在金锄头文库上搜索。

1、第六章循环控制 6 1概述6 2goto语句以及用goto语句构成循环6 3while语句和do while语句6 4for语句6 5循环的嵌套6 6break和continue语句 6 1循环控制概述 循环结构的特点 在给定条件成立时 反复执行某程序段 直到条件不成立为止 语言提供的循环结构类型如下 1 用goto语句和if语句构成循环 2 用while语句 3 用do while语句 4 用for语句 循环条件 循环体 6 2goto语句以及用goto语句构成循环 6 2 1形式 goto语句标号 6 2 2功能 一进入执行goto语句 立即转向去执行其后面标号所指示的语句 gotojum

2、p loop 语句1语句1语句2语句2 语句n语句njump 语句n 1gotoloop 用标识符表示 分号 冒号 冒号 6 2 3注意 结构化程序设计方法主张限制使用goto语句 一般只在下面两种结构中表示循环一 loop if 表达式 语句gotoloop 表达式值为零时 立即停止循环二 loop 语句if 表达式 gotoloop 表达式值非零时 立即停止循环 例 用goto语句和if语句构成循环 例用goto语句和if语句构成循环 voidmain inti sum 0 i 1 loop if i 100 sum sum i i gotoloop printf d n sum 运行结果

3、 5050 i 101 形式 while 表达式 语句表达式值为零时 立即停止循环形式 do语句while 表达式 表达式值为零时 立即停止循环 至少执行一次循环语句 6 3while和dowhile语句 分号 while 表达式 do语句while 表达式 例1 写出下面程序的运行结果 1 voidmain inti 1 while i 3 printf d n i i 2 voidmain inti 1 while i 3 printf d n i i 结果123 结果死循环 循环体 空语句 注意 若把上面 去掉也死循环 复合语句作为循环体语句 3 voidmain intk 1 n 1

4、sum 0 do sum n n if sum 10 k 0 while k 1 printf sum d n sum 改为while k 1 死循环 0 1 1 2 3 3 6 4 10 结果 sum 10 例2用while语句和do while语句求 传统流程图表示算法 N S图表示算法 100 voidmain inti sum 0 i 1 运行结果 5050while i 100 sum i i printf d n sum voidmain inti sum 0 i 1 do sum i i while i 100 printf d n sum 注意 i和sum的初值i的终值 例3统

5、计从键盘输入一行字符的个数 includevoidmain intn 0 printf inputastring n while getchar n n printf d n 只要从键盘输入的字符不是回车就继续循环 完成对输入字符个数计数 输入 ascdf 输出 5 例4 计算p 1 2 3 nvoidmain inti n longp scanf d 不用long会溢出 重复到n次 也可以写成i n 1 例5 计算s 1 2 3 n n 0 voidmain inti n longs t scanf d 保证达到计算n次 t 1 1 2 3 S 1 1 2 1 2 3 例6 计算下面二十个数

6、的和 13 8 65 68 9 342 987voidmain inti 1 floatx sum 0 while i 20 scanf f 注 执行程序时输入13 8 6568 9 342 987 i 40 i 2 while语句中的表达式一般是关系表达或逻辑表达式 也可以是其它表达式 只要表达式的值为真 非0 即可继续循环 例7 voidmain inta 0 n printf ninputn scanf d 执行n次 每执行1次 n减1 a 2 a 输入 8 输出 02468101214 例8 while和do while循环比较 voidmain intsum 0 i scanf d

7、do sum sum i i while i 10 输入 8 输入 11 sum 0 sum 11 6 4for语句 代替while语句 6 4 1形式 for 表达式1 表达式2 表达式3 语句要正确表达循环结构应注意三方面要求 1 循环控制变量的初始化 2 循环的条件 3 循环控制变量的值的更新 for语句在书写形式上集中体现了这三方面要求 6 4 2功能 for语句完全可以取代while语句 for 表达式1 表达式2 表达式3 语句它的执行过程如下 1 先求解表达式1 2 求解表达式2 若其值为真 非0 则执行for语句中指定的内嵌语句 然后执行第3 步 若其值为假 0 则结束循环 转

8、到第5 步 3 求解表达式3 4 转回第2 步继续执行 5 循环结束 执行for语句下面的一个语句 用for语句改写前面的例2 例4 例5 例7 例2 求voidmain inti sum 0 i 1 do sum i i while i 100 printf d n sum voidmain inti sum 0 for i 1 i 100 i sum i printf d n sum 例4 计算p 1 2 3 nvoidmain inti n longp scanf d for i 1 p 1 i n i P i 中间用逗号 for i 1 p 1 i n P i i 例5 计算s 1 2

9、 3 n n 0 voidmain inti n longs t scanf d for i 1 t 1 s 0 i n i t i s t 例7 计算下面二十个数的和 13 8 65 68 9 342 987voidmain inti 1 floatx sum 0 while i 20 scanf f for i 1 i 20 i scanf f for语句形式 for 循环变量赋初值 循环条件 循环变量增量 语句 总是一个赋值语句 它用来给循环控制变量赋初值 总是一个表达式 它用来判别循环是否终止 定义循环控制变量每循环一次后按什么方式变化 这三个部分之间用 分开 对于for循环中语句的一

10、般形式 for 表达式1 表达式2 表达式3 语句就是如下的while循环形式 表达式1 while 表达式2 语句表达式3 例1 写出下面程序的输出结果 includevoidmain charc for c getchar putchar c c为 值为0 结束 可以是任意表达式 输入 a56 3h hj 输出 a56 3h 例2 下面程序的输出结果是 voidmain intx 10 y 10 i for i 0 x 8 y i printf 3d 3d x y A 10192B 9876C 101091D 10990 表达式1只做一次 9 1 8 C 2 注意 1 for循环中的 表达

11、式1 表达式2 循环条件 和 表达式3 可以缺省 但 不能缺省 2 省略了 表达式1 表示不对循环控制变量赋初值 可在for循环里面或外面对其赋初值 例如 i 1 for i 20 i scanf f 4 省略了 表达式3 循环变量增量 则不对循环控制变量进行操作 这时可在语句体中加入修改循环控制变量的语句 例如 for i 1 i 100 sum sum i i 5 省略了 表达式1 和 表达式3 例如 for i 100 sum sum i i 相当于 while i 100 sum sum i i 6 3个表达式都可以省略 例如 for 语句相当于 while 1 语句7 表达式1可以是

12、设置循环变量的初值的赋值表达式 也可以是其他表达式 例如 for sum 0 i 100 i sum sum i 8 表达式1和表达式3可以是一个简单表达式也可以是逗号表达式 for sum 0 i 1 i 100 i sum sum i 或 for i 0 j 100 i 100 i j k i j 9 表达式2一般是关系表达式或逻辑表达式 但也可是数值表达式或字符表达式 只要其值非零 就执行循环体 例如 for i 0 c getchar n i c 又如 for c getchar n printf c c 6 5循环的嵌套 1 各种循环结构的循环体中可以包含任一种完整的循环结构 选择结

13、构 2 选择结构的任一分支中也可以包含任一种完整的循环结构 选择结构 3 且它们可多层嵌套 例1 while x y z for k 1 k 2 k if a 5 w 1 elseif a 5 switch结构 else for s 0 n 0 n 3 n s n 6 6break语句和continue语句 switch结构中的break 提前结束该结构循环结构中的break 提前结束该结构 while循环 do while循环 for循环 循环结构中的continue 提前结束本次循环 若在多层嵌套中使用break或continue 它只影响包含它的最内层结构 例1 写出以下程序的运行结果

14、voidmain intn for n 1 n 10 n if n 3 0 break printf 4d n printf n voidmain intn for n 1 n 10 n if n 3 0 cotinue printf 4d n printf n 结果 12 结果 12457810 例2 把100 200之间的不能被3整除的数输出 includevoidmain intn for n 100 n 200 n if n 3 0 continue printf d n printf n 能被3整除 则进行下一次循环 例3 计算下面若干个数的和 13 8 65 68 9 342 98

15、7 并统计个数 个数 100 includevoidmain inti 1 floatx sum 0 while i 100 scanf f 注 执行程序时输入13 8 6568 9 342 9871e36 求绝对值 理论上相等 实际上有误差 位置不能错 i 1 例4 voidmain intk j x 0 for k 1 k 4 k x if k 3 0 break for j k j 5 j x x printf d n x 结果 14 程序举例 例1 输出10 1000中所有十位数为3的数voidmain inti for i 10 i 1000 i if i 10 10 3 print

16、f 5d i 如 i 1234i 10 123整数123 10 3 if i 10 103 continue printf 5d i 例2 voidmain intk for k 2 k 10 k 3 printf 4d k printf 4d k 运行结果 25811 例3 voidmain intk j 99 for k 1 k 2 k printf 1 d 5d n k j for j 5 j 7 j printf 2 d 5d n k j printf 3 d 5d n k j printf 4 d 5d n k j 例4 voidmain inti j k printf ijk n for i 0 i 2 i for j 0 j 2 j for k 0 k 2 k printf d d d n i j k 1 2 1 2 例5 输出100 200中所有素数m是素数 m不被2 3 4 m 1中任一个整除结果 101103107109113127131137139149151157163173173179181191193197199 执行m 11 m 15 k m 1 k m

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 中学教育 > 教学课件

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