C语言循环结构一章

上传人:资****亨 文档编号:130130609 上传时间:2020-04-25 格式:PPT 页数:41 大小:546.50KB
返回 下载 相关 举报
C语言循环结构一章_第1页
第1页 / 共41页
C语言循环结构一章_第2页
第2页 / 共41页
C语言循环结构一章_第3页
第3页 / 共41页
C语言循环结构一章_第4页
第4页 / 共41页
C语言循环结构一章_第5页
第5页 / 共41页
点击查看更多>>
资源描述

《C语言循环结构一章》由会员分享,可在线阅读,更多相关《C语言循环结构一章(41页珍藏版)》请在金锄头文库上搜索。

1、 第五章循环结构 1 用goto语句和if语句构成循环 2 用while语句 3 用do while语句 4 用for语句 If语句和goto语句构成的循环 一般形式 goto语句标号 作用 无条件转向语句标号处执行语句标号 合法的标识符后面加个冒号 语句标号必须于此goto语句在同一个函数中goto语句不符合结构化程序设计准则 因为无条件转向使程序结构无规律 可读性差 一般应避免使用goto语句 但如果能大大提高程序的执行效率 也可以使用 Example5 1 includemain intx x 3 ab x 2 ab 语句标号只能写在语句行的最左边 if x 20 gotoab prin

2、tf d n x while语句 一般形式 while 表达式 语句作用 实现 当型 循环 当 表达式 非0 真 时 执行 语句 语句 是被循环执行的程序 称为 循环体 特点 先判 表达式 条件 注意事项 while后面的 不能少表达式的可以使任意合法的表达式语句的位置上只能有一条语句 while语句范围只到while后面第一个分号处 超过一条用 括起来while语句的循环体可能一次都不执行循环体中必须有使循环趋于结束的语句 否则程序进入 死循环 不结束 求1 100的累计和 根据已有的知识 可以用 1 2 100 来求解 但显然很繁琐 现在换个思路来考虑 首先设置一个累计器sum 其初值为0

3、 利用sum n来计算 n依次取1 2 100 只要解决以下3个问题即可 1 将n的初值置为1 2 每执行1次 sum n 后 n增1 3 当n增到101时 停止计算 此时 sum的值就是1 100的累计和 Example5 2计算 includemain inti sum 0 i 1 while i 100 sum sum i i printf d sum Example5 3输入两个整数x和y 计算x和y之间所有的偶数之和main intx y sun t printf 请输入两个整数 前大后小 scanf d d dowhile语句 一般格式 do语句 循环体 while 表达式 特点

4、直到型 循环结构 先执行一次 语句 判 表达式 当 表达式 非0 再执行 语句 直到 表达式 为0 循环结束 dowhile注意点 do后面没有分号 语句的位置上只能到第一个分号处 也就是只能有一条语句 超过用 构成复合语句表达式可以是任意表达式 Example5 4计算n以内所有能被3整除或者能被7整除的自然数之和 从3开始 各个自然数i逐个进行比较 直到自然数i不小于n则循环结束 include stdio h main intn i s printf 请输入一个整数 scanf d while和do while循环的比较 main inti s 0 scanf d 运行情况如下 main

5、 inti s 0 scanf d 运行情况如下 说明 在一般情况下 用while和do while语句解决同一问题时 若二者的循环体部分是一样的 它们的结果也一样 但当while后面的 表达式 一开始就为 假 时 两种循环的结果不同 这是因为此时while循环的循环不被执行 而do while循环的循环体被执行一次 for语句 一般格式for 表达式1 表达式2 表达式3 语句 循环变量赋初值 循环条件 循环变量增量 循环体部分 执行过程 1 求表达式1 2 求表达式2 若为 真 执行 语句 若为假 转第 5 步 3 求表达式3 4 转第 2 步 5 执行for语句下面的语句 Example

6、5 5计算n以内所有自然数之和 include stdio h main intn i s printf 请输入一个整数 scanf d for语句说明 1 for语句中条件测试总是在循环开始时进行 如果循环体部分是多个语句组成的 则必须用左 右花括号括起来 使其成为一个复合语句 2 for语句中的表达式1和表达式3即可以是一个简单的表达式 也可以是逗号连接的多个表达式 此时的逗号作为运算符使用 如 for s 0 i 1 i 100 i s s i 或 for i 1 j 100 i j i j k i j 在逗号表达式内按自左至右顺序求解 整个逗号表达式的值为其中最右边的表达式的值 如 f

7、or i 1 i 100 i i s s i 相当于 for i 1 i 100 i i 2 s s i 3 for语句的一般形式中的 表达式1 可以省略 此时应在for语句之前给循环变量同赋初值 注意省略表达式1时 其后的分号不能省略 如 for i 100 i s s i 执行时 跳过 解表达式1 这一步 其它不变 4 如果表达式2省略 即不判断循环条件 循环无终止地进行下去 也就是认为表达式2始终为真 例如 for i 1 i s s i 相当于 i 1 while 1 s s I i 5 表达式3也可以省略 但此时程序设计应另外设法保证循环能正常结束 如 for i 1 i 100 s

8、 s I i 6 可以省略表达式1和表达式3 只有表达式2 即只给循环条件 例 for i 100 s s i i 相当于 while i 100 s s i i 7 3个表达式都可以省略 如 for 语句相当于 while 1 语句即不设初值 不判断条件 认为表达式2为真值 循环变量不增值 无终止地执行循环体 8 表达式1可以是设置循环变量初值的赋值表达式 也可以是与循环变量无关的其它表达式 如 for s 0 i 100 i s s i 表达式3也可以是与循环控制无关的任意表达式 9 表达式2一般是关系表达式 如i 100 或逻辑表达式 如a b x y 但也可以是数值表达式或字符表达式

9、只在其值为非0 就执行循环体 break语句和continue语句 break语句作用 跳出所在的多分支switch语句 跳出所在的while do while for循环语句 提前结束循环continue语句作用 提前结束本次循环体的执行 接着进行下一次循环条件的判别 break语句和continue语句的区别 while 表达式1 if 表达式2 continue while 表达式1 if 表达式2 break for r 1 r100 break printf f aera 几种循环的比较 1 四种循环 while do while for goto 可以互相替换 但应尽量少用goto

10、 2 循环条件 while do while在while后面指定 for循环在 表达式2 中指定 3 循环初始条件 while do while在循环前指定 for循环在 表达式1 中指定 4 判循环条件的时机 while for循环先判循环条件 后执行 do while循环先执行 后判循环条件 5 while do while for循环均可用break语句跳出循环 结束循环 用continue语句提前结束本次循环体的执行 Example5 6输入一个整数x 判断该数是否是合数质数 素数 只能被1和它本身整除的自然数合数 除了1和它本身外 还存在能整除它的数 include stdio h

11、main intx i printf 请输入一个整数 scanf d Example5 7输入一个整数 计算该数的因子 不包括自己的因数 之和 include stdio h main intx i s printf 请输入一个整数 scanf d Example5 8 输出所有的 水仙花数 所谓的 水仙花数 是指一个三位数 该数各个位数上的立方和等于它本身 方法 穷举法列举法对所有有可能满足条件的数据逐个进行判断 找出符合题目意思的数据确定有可能满足条件的范围 include stdio h main inti g s b for i 100 i 1000 i 对所有的三位数逐个进行判断 计

12、算出i的个位数 十位数 百位数 g i 10 i的个位数 s i 10 10 i的十位数 b i 100 10 i的百位数 判断i与个位数的立方 十位数的立方 百位数的立方是否相等 if i g g g s s s b b b printf d是个水仙花数 n i Example5 9输出九九乘法表 include stdio h main inti j for i 1 i 10 i 总共有9行 第i行 第i行有i列 for j 1 j i j printf 2d d 2d j i i j printf n 输出换行 Example5 10输入一个n 输出n行 其中第几行就有几个图形如下mai

13、n inti j n printf 请输入一个数 scanf d 输入一个n 输出n行 每行有若干个 和若干个 如下图 include stdio h main inti j n printf 请输入一个数 scanf d 以下程序运行结果是 includemain inti 5 do if i 3 1 if i 5 2 printf d i break i while i 0 printf n A 7B 3 5C 5D 2 6 以下不构成无限循环的语句或语句组是 A n 0 do n while n 0 B n 0 while 1 n C n 10 while n n D for n 0 i

14、 1 i n 1 以下程序运行结果是 includemain inti j for i 3 i 1 i for j 1 j 2 j printf d i j printf n A 234345 B 432543 C 233445 D 453423 有以下程序运行后的结果是 main inti j x 0 for i 0 i 2 i x for j 0 j 3 j if j 2 continue x x printf x d n x A x 4B x 8C x 6D x 12 有以下程序运行后的结果是 includemain inti for i 0 i 3 i switch i case0 p

15、rintf d i case2 printf d i default printf d i A 02111B 021021C 000122D 012 以下程序的输出结果是 includemain intk 0 m 0 inti j for i 0 i 2 i for j 0 j 3 j k k j m i j printf k d m d k m A k 0 m 3B k 0 m 5C k 1 m 3D k 1 m 5 以下程序运行后输出的结果是 main inti j for i 1 i 4 i for j i j 4 j printf d d d i j i j printf n A 1 1 11 2 21 3 32 1 22 2 43 1 3 B 1 1 11 2 21 3 32 2 42 3 63 3 9 C 1 1 11 2 22 2 41 3 32 3 63 3 9 C 1 1 12 1 22 2 43 1 33 2 63 3 9 若有定义 intk 以下程序的输出结果是 for k 2 kmain intn 12345 d while n 0 d n 10 printf d d n 10

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

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

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