C语言程序设计循环因子,C语言程序设计循环结构程序设计.ppt-资源下载在线文库www.lddoc.cn...

C语言程序设计 循环结构程序设计.ppt

第5章循环结构程序设计 C语言程序设计 北京航空航天大学交通科学与工程学院徐国艳 2020 1 29 2 循环的基本概念不同形式的循环控制多重循环问题 2020 1 29 3 什么是循环 为什么要使用循环 5 1循环的基本概念 循环是有规律的重复操作 将复杂问题分解为简单的操作过程 程序只对简单过程描述 这些过程的多次重复就可完成对问题的求解 重复的频繁性决定了循环在程序设计中必不可少 一 循环问题 问题1 问题2 求学生平均成绩分数相加后除以课程数 做99次加法 问题3 找出数集x中能同时被3和7整除的数找数 问题分解循环控制 2020 1 29 4 5 1循环的基本概念 while循环 5 2节 dowhile循环 5 3节 for循环 5 4节 if goto循环 一般不用 难点 循环嵌套 C提供四种循环控制语句 2020 1 29 5 5 1循环的基本概念 续 二 循环结构 循环结构有两种形式 当型循环结构直到型循环结构 当型循环 直到型循环 先判断后循环 先循环后判断 入口 出口 区别 循环体中是一个过程 该过程的复杂程度取决于问题及对问题的分解 2020 1 29 6 5 1循环的基本概念 续 当型循环 条件循环次数 Y Y执行1 Y执行3 Y执行2 N结束 Y Y N 3次 在循环入口处判断当条件为真时执行循环 2020 1 29 7 5 1循环的基本概念 完 直到型循环 在循环出口处判断 当条件为真时继续执行循环 直到条件为假时为止 条件循环次数 执行1 Y执行3 Y执行2 N结束 Y Y Y Y执行4 N 循环至少执行一次 2020 1 29 8 5 2while循环控制 语句一般格式while 表达式 语句组 一般为关系表达式或逻辑表达式 也可以是C语言其他类型的合法表达式用来控制循环体是否被执行 称为内嵌语句 可以是基本语句 控制语句 也可以是复合语句是循环重复执行的部分 当条件为真时执行循环体 2020 1 29 9 语句一般格式while 表达式 语句组 功能 计算 表达式 的值 为非0 逻辑真 时 重复执行内嵌语句 每执行一次 就判断一次表达式的值 直到表达式的值为0时结束循环 转去执行while后面的语句 2020 1 29 10 循环控制条件 循环体 语句一般格式while 表达式 语句组 2020 1 29 11 例如 例5 1 编写程序 求100个自然数的和即 s 1 2 3 100 思路 寻找加数与求和的规律 加数i 从1变到100 每循环一次 使i增1 直到i的值超过100 i的初值设为1 求和 设变量sum存放和 循环求sum sum i 直至i超过100 2020 1 29 12 算法和程序 include stdio h voidmain inti sum i 1 sum 0 while i 100 sum sum i i printf sum d n sum 程序输出结果 sum 5050 i 循环控制变量sum 累加器 2020 1 29 13 注意 如果while的 表达式 值为0 则循环体一次也不执行 例如当i的初值 101 在循环体中必须有使循环趋向结束的操作 否则循环将无限进行 死循环 在循环体中 语句的先后位置必须符合逻辑 否则会影响运算结果 思考程序段的输出 i 1 sum 0 while i 100 i sum sum i 运行后 输出 sum 5150原因是什么 2020 1 29 14 注意 续 总结 为了保证循环正常运行 应该特别注意 循环控制条件的描述控制条件的初始状态 初始值 循环体内部对控制条件的影响 2020 1 29 15 5 3do while语句 语句一般格式do 语句组 while 表达式 功能 先执行内嵌语句 循环体 之后计算表达式的值 不为0 逻辑真 时 再执行循环体并判断条件 直到表达式的值为0结束循环 转去执行while下面的语句 直到条件为假时结束循环 2020 1 29 16 do while循环的算法 N S结构图 include stdio h voidmain inti 1 sum 0 do sum sum i i while i 100 printf d n sum 用do while语句求100个自然数的和 2020 1 29 17 voidmain intn 1 s 0 x scanf d 求 流程图 do s s n n while n x dowhile N 2020 1 29 18 ex1 1 C voidmain ints 0 x scanf d ex1 C voidmain ints 0 x scanf d 例 循环至少执行一次 循环没有被执行 三 while与dowhile的比较 输出 s 12 输出 s 0 如输入为1和12 两程序各输出情况 输入12时 2020 1 29 19 5 4for语句 语句一般格式for 表达式1 表达式2 表达式3 语句 循环初始条件 循环控制条件 循环体 1 求解表达式1 2 求解表达式2 值为真 非0 执行循环体 然后执行第3步 值为假 0 则结束循环 转到第5步 3 求解表达式3 4 转回第2步 5 循环结束 执行for语句下面的语句 2020 1 29 20 for e1 e2 e3 语句的算法 例如 voidmain inti sum sum 0 for i 1 i 100 i sum sum i printf sum d n sum 2020 1 29 21 for循环控制语句 for e1 e2 e3 e1 e2 e3均可缺少 for n 100 n 缺少e1 n应在循环之前赋初值for n 0 n 缺少e2 造成死循环for n 0 n 100 缺少e3 n增量应在循环体内进行for 缺少e1 e2 e3 死循环 for n 100 缺少e1 e3 分号始终不能缺少 讨论 2020 1 29 22 for循环控制语句 for 初值 判断 增量 语句 for 初值 判断 增量 复合语句 for 初值 判断 增量 2 e1和e3可是与初值 增量无关的逗号表达式 for s 0 n 1 n 100 s s n printf d s n for s 0 n 100 s s n n printf d s 求累加和 n的初值在for之前完成 增量在for之外完成 for语句的形式 2020 1 29 23 for循环控制语句 voidmain intn 1 s 0 x scanf d while n x s s n n voidmain intn s x scanf d 例 缺少e1 赋初值 2020 1 29 24 for循环控制语句 voidmain intn s for n 1 n 10 n 2 printf n d n n voidmain intn s for n 1 n 10 n 2 printf n d n n 以下程序的输出结果 输出结果 n 11 输出结果 n 1n 3n 5n 7n 9 2020 1 29 25 5 5循环结构中的跳转语句 有如下三种语句实现跳转 continue语句break语句goto语句功能 在循环语句的循环体中使用 可以进行循环的流程控制 2020 1 29 26 5 5 1continue语句及应用 功能 中断循环体的本次执行 即跳过循环体中尚未执行的语句 立即开始执行下一次循环 while语句 do while语句 for语句 2020 1 29 27 例如 intx n 0 s 0 while n 10 scanf d intx n 0 s 0 do scanf d for n 0 s 0 n 10 n scanf d 2020 1 29 28 应用举例 例5 4 把100 200之间能被7整除的数 以十个数为一行的形式输出 最后输出一共有多少个这样的数 for n 100 n 200 n n能被7整除FT终止本输出n次循环输出了10个数TF换行 2020 1 29 29 算法和程序 include stdio h voidmain intn j 0 for n 100 n 200 n if n 7 0 continue printf 6d n j if j 10 0 printf n printf nj d n j 2020 1 29 30 5 5 2循环中break的应用 功能 利用break语句能够强迫终止本层循环 转到后续语句执行 while语句 do while语句 for语句 2020 1 29 31 例如 intx n 0 s 0 while n 10 scanf d intx n 0 s 0 do scanf d for n 0 s 0 n 10 n scanf d 2020 1 29 32 5 6循环的嵌套 如果循环语句的循环体内又包含了另一条循环语句 则称为循环的嵌套例如 includevoidmain inti j for i 1 i 10 i for j 1 j i j printf j i 4d n 4d i j 外循环语句 内循环语句 2020 1 29 33 注意 while do while for循环语句可以并列 也可以相互嵌套 但要层次清楚 不能出现交叉 多重循环程序执行时 外层循环每执行一次 内层循环都需要循环执行多次 例如 for a 1 a 10 a for b 0 b 5 b 外循环执行了10次 每次外循环中内循环执行6次循环正常结束时 内循环执行了10 6 60次 2020 1 29 34 5 7循环结构程序设计 例5 5 按每行输出5个数的形式输出Fibonacci数列的前20项 Fibonacci数列的前几项是 1 1 2 3 5 8 13 21 34 此数列的变化规律是 思路 设变量f1 f2和f3 并为f1和f2赋初值1 令f3 f1 f2得到第3项 将f1 f2 f2 f3 再求f3 f1 f2得到第4项 依此类推求第5项 第6项 这是一种递推算法应采用循环实现 2020 1 29 35 算法和程序 include stdio h defineN20voidmain inti f1 f2 f3 f1 f2 1 printf n 8d 8d f1 f2 for i 3 i N i f3 f1 f2 f1 f2 f2 f3 printf 8d f3 if i 5 0 printf n 2020 1 29 36 举例 例5 6 判断输入的某个数m是否为素数 若是素数 输出 YES 若不是 输出 NO 思路 素数是指只能被1和它本身整除的数 如5 7 11 17 等 分别用2 3 m 1尝试能否整除整数m 如果m能被某个数整除 则m就不是素数 这是一种穷举算法设除数为j 从2循环到m 1 2020 1 29 37 算法和程序 include math h voidmain intj m k printf Enteranintegernumber scanf d 2020 1 29 38 举例 例5 7 编程序求2 10000以内的完全数 完全数 一个数的因子 除了这个数本身 之和等于该数本身 思路 设定i从2变到10000 对每个i找到其因子和s 判定i s 若相等 则i为完全数 否则不是 例如 6的因子是1 2 3 因子和1 2 3 6因此6是完全数 使用穷举算法用双层循环实现 2020 1 29 39 算法和程序 include stdio h voidmain inti j s for i 2 i 10000 i s 0 for j 1 j i j if i j 0 s j if i s printf 6d n s 2020 1 29 40 举例 例5 9 编程序 输出以下图形 一共有4行 每行由空格和星号组成 空格数按行增加 星号按行减少变量i控制输出行数 从1变化到4变量j控制输出每行的空格和星号 j从1变化到i 每次输出一个空格j从1变化到8 2 i 1 每次输出一个星号 使用双重循环实现 思路 2020 1 29 41 算法和程序 include stdio h voidmain inti j for i 1 i 4 i for j 1 j i j printf for j 1 j 8 2 i 1 j printf printf n 延伸思考 如何输出10行图形 输出图形向右平移20个字符位置 应如何修改程序 2020 1 29 42 作业 P140页6 8 11 17

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值