c语言-第4章循环结构.ppt

上传人:max****ui 文档编号:8291497 上传时间:2020-03-28 格式:PPT 页数:30 大小:549KB
返回 下载 相关 举报
c语言-第4章循环结构.ppt_第1页
第1页 / 共30页
c语言-第4章循环结构.ppt_第2页
第2页 / 共30页
c语言-第4章循环结构.ppt_第3页
第3页 / 共30页
点击查看更多>>
资源描述
1 4 1用格里高利公式求 的近似值 while语句 第4章循环结构 例4 1用格里高利公式求 的近似值 要求精确到最后一项的绝对值小于10 5 循环结构 根据条件的判断对某一段程序重复执行 构成循环的要素 循环体 条件判断 进入每次循环的准备 循环语句 for 表达式1 表达式2 表达式3 语句循环变量控制循环次数 循环变量 初值 终值 增量 pi pi item 通项 item flag 1 0 2 i 1 flag 1 i 1 2 分析 循环结束条件 item 10 5 2 item 10 5 pi pi item 非0 0 i 1 i i 1 pi 0 4 1 1程序解析 item 1 flag 1 item flag 2 i 1 flag flag pi 4 pi 输出pi 停 表达式1和表达式3不明确 include includevoidmain inti flag doubleitem pi pi 0 flag 1 i 1 item 1 for fabs item 1e 5 pi pi item i i 1 flag flag item flag 1 0 2 i 1 pi pi 4 printf pi f n pi 省略了表达式1和表达式 3 include includevoidmain inti flag doubleitem pi pi 0 flag 1 i 1 item 1 while fabs item 1e 5 pi pi item i i 1 flag flag item flag 1 0 2 i 1 pi pi 4 printf pi f n pi for循环语句改用while循环语句 4 4 1 2while循环语句 当型循环当条件为真 非0 时做循环 否退出循环 格式while 表达式 语句 其中语句是一个语句或复合语句表达式是条件 求值得真 非0 或假 0 操作当表达式的值非0 执行语句后继续循环 当表达式的值0 终止循环 表达式 语句 非0 0 loop if 表达式 语句 gotoloop 等价于 for 表达式 语句 for 表达式1 表达式2 表达式3 语句 表达式1 while 表达式2 语句 表达式3 5 例4 2输入一批学生的成绩 统计平均分 循环体sum sum markmark学生成绩 循环判断一批mark 0则mark为负值结束循环 mark 0 sum sum mark 非0 0 num num 1 num 0 sum 0 aver sum num 输出aver 停 输入mark 输入mark includevoidmain intnum doublemark sum aver num 0 sum 0 scanf lf 6 4 2统计一个整数的位数 do while语句 例4 3从键盘读入一个整数 统计该数的位数 例如 输入1234 输出4 输入0 输出1 一个整数由多位数字组成 统计过程需要一位位地数 利用num 10 num 每统计一次减少一位数 例1234 整数位数123411234 10 1232123 10 12312 10 141 10 0不计 判断条件num 0 例0 整数位数010 10 0不计 先统计后判断条件 num 0 coun coun 1 非0 0 num num 10 coun 0 输出coun 停 输入num 7 4 2 1程序解析 includevoidmain intcoun num coun 0 scanf d num 0 coun coun 1 非0 0 num num 10 coun 0 输出coun 停 输入num 8 4 2 2do while循环语句 直到型循环做循环一直到条件不满足为止 格式do语句while 表达式 其中语句是一个语句或复合语句表达式是条件 求值得真 非0 或假 0 操作先做语句 然后判别表达式的值 如非0则继续循环 否终止循环 表达式 语句 非0 0 loop 语句 if 表达式 gotoloop 等价于 9 4 2 3循环语句的选择 循环语句的选择 for 知道循环次数 能表示增量型 只要能表示三个表达式 最常用 while 当循环次数未知时 使用较多 先判断 后循环do while 必须从循环体中才能得到循环变量的值 然后再判决定是否进行下一次循环 先循环 后判断 10 4 3break语句和continue语句 4 3 1break语句当break语句出现在while do while for语句的循环体内 执行break时立即终止循环 表达式2 语句 非0 0 表达式1 表达式3 break 例半径为1 100 要求打印圆面积 100时的半径和圆面积 include stdio h voidmain intr floatarea for r 1 r100 break printf r d area f n r area 表达式 0 非0 语句 11 例4 4输入一个正整数m 判断它是否为素数 素数就是只能被1和自身整除的正整数 1不是素数 2是素数 素数 指只能被1和自身整除的正整数即用m分别去除以2 3 m 1 全除不尽时 m是素数 实际上除数的范围 2 m 2 可以证明在 2 i m 2 1 0 i 输出yes 停 输入m i 2 m i 0 0 1 i m 2 输出no 1 0 include stdio h voidmain inti m scanf d break 12 include stdio h voidmain inti m scanf d 若改动程序 include stdio h voidmain inti m scanf d 未退出循环 退出循环未退出程序 13 要考虑边界值 1不是素数 2是素数 include stdio h voidmain inti m scanf d miim 2 1221 2 yes2222 2 yes include stdio h voidmain intflag m scanf d 14 4 3 2continue语句格式continue 当continue语句出现在while do while for语句的循环体内 执行continue时终止本次循环 接着执行下一次循环 表达式2 语句 非0 0 表达式1 表达式3 continue 表达式 0 非0 例把100 200之间的不能被3整除的数输出 include stdio h voidmain intn for n 100 n 200 n if n 3 0 continue printf d n n 语句 15 例下列程序段执行后s值为 inti 5 s 0 do if i 2 continue s i while i A 15B 9C 6D 以上均不是 答案C i 55 2 1s 0i 44 2 0s 0 4 4i 33 2 1s 4i 22 2 0s 4 2 6i 11 2 1s 6i 0循环结束 16 循环嵌套循环语句的循环体中又包含了另一个循环语句 1 while While 2 do While while 3 for While 4 4循环嵌套 17 例4 6求s 1 2 3 100 分析 1 2 3 100 累加需要循环s s ti 1 2 i需要循环t t j s 0 i 1 100 1 t 1 j 1 i 1 t t j j s s t i 输出s include stdio h voidmain inti j doublet s 0 for i 1 i 100 i t l for j 1 j i j t t j s s t printf s f n s 18 执行过程 首先外层循环变量i固定在一个值上 然后执行内层循环j 内层循环变量j变化一个轮次 外层循环变量i加1后 重新执行内层循环 j再变化一个轮次 s 0 for i 1 i 100 i t l for j 1 j i j t t j s s t 19 实际该题单循环可以解决 i i 1 i include stdio h voidmain inti j doublet l s 0 for i 1 i 100 i t t i s s t printf s f n s 改动程序 include stdio h voidmain inti j doublet s 0 t l for i 1 i 100 i for j 1 j i j t t j s s t printf s f n s 每一个i 的累积器t 从1开始 20 4 5循环程序设计 循环程序实现要点 1 找出什么要反复执行 循环体 2 重复到何时结束 循环控制条件 循环次数 循环增量关系或逻辑表达式 例4 7从键盘输入一批学生的成绩 找出最高分 循环次数 1 2 n n为已知值输入 用for循环 设定一个特殊数据 伪数据 作为循环的结束标志 由于成绩都是正数 选用一个负数作为输入的结束标志 用while或do while 分析 循环体 输入的一个学生成绩比较取高分 21 1 2 n n为已知值输入 用for循环 include stdio h voidmain inti mark max n scanf d 22 选用一个负数作为输入的结束标志 用while或do while include stdio h voidmain intmark max scanf d include stdio h voidmain intmark max max 1 do scanf d 23 例4 8将键盘读入的一个任意正整数逆序输出 例如键盘输入12345 屏幕输出显示54321 分离整数各位算法 整数xx 10 余数分离最低位x x 10 去掉最低位当x 0或x 0循环分离整数所有的位 例x 1234512345 10 512345 10 1234 01234 10 41234 10 123 0123 10 3123 10 12 012 10 212 10 1 01 10 11 10 0 include stdio h voidmain intx scanf d 分析 循环控制 x 0 循环体 x 10 余数输出余数x x 10 去掉最低位 24 例4 8将键盘读入的一个任意整数逆序输出 设正数和负数逆序输出的结果一样 即逆序输出不带负号 include stdio h voidmain intx scanf d x 10输出带负号 include stdio h include math h voidmain intx scanf d 将x取绝对值 要考虑特殊解0 include stdio h include math h voidmain intx scanf d 25 例4 9求500之内的全部素数 1不是素数 2是素数 分析 素数定义 只能被1或数本身除尽的数判别素数 1 给出在2 500之间的m数 2 用2 3 4 m 1除 只要有个被除尽 m不是素数可以证明除数只要取2 3 m 2 500 1 k i 2 k 1 m i 0 i i k 1 输出m k 0 1 1 0 流程图 程序 include math h voidmain inti m k n 0 for m 2 m k 1 printf d m n if n 10 0 printf n 要验证边界值 1不是素数 2是素数 26 例4 10求Fibonacci 斐波那契 数列的前10个数1 1 2 3 5 8 13 数之间的关系F1 1n 1F2 1n 2Fn Fn 1 Fn 2n 3 分析 前2项之和等于后项值f3 f1 f2 i 1234567 f1 111235f2 112358f3 235813 得f1 f2f2 f3f3 f1 f2 27 流程图 f1 1f2 1f3 2 i 10 i 4 i i 1 1 0 输出f1 f2 f3 f1 f2f2 f3f3 f1 f2 输出f3 表达式1 表达式2 表达式3 程序 include stdio h voidmain inti f1 f2 f3 f1 1 f2 1 f3 2 printf d d d f1 f2 f3 for i 4 i 10 i f1 f2 f2 f3 f3 f1 f2 printf d f3 if i 5 0 printf n 终 28 例4 11某工地搬运砖块 已知男人一人搬3块 女人一人搬2块 小孩两人搬一块 问用45人正好搬45块砖 有多少种搬法 列出方程 men women child 45men 3 women 2 child 0 5 45 2个方程解3个未知数 只有通过试算 有多种答案 即men 0 1 45 wonen 0 1 45 child 0 1 45代入求解 include stdio h voidmain intmen women child for men 0 men 45 men for women 0 women 45 women for child 0 child 45 child if men women child 45 29 程序改进 for men 0 men 45 men for women 0 women 45 women for child 0 child 45 child 三重循环45 45 45约9万多次 减少循环次数 去掉明显不能组合的循环 由于最多只有45块砖 男人的数量不会超过15人 女人的数量不会超过22人 一旦男人和女人的数量确定下来后 小孩的人数应该是 45 男人数 女人数 include stdio h voidmain intmen women child for men 0 men 15 men for women 0 women 22 women child 45 men women if men 3 women 2 child 0 5 45 printf men d women d child d n men women child 程序执行15 22次 30 习题4 3 6 8 11 13 16
展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 图纸专区 > 课件教案


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!