do-while语句for语句循环结构的嵌套.ppt

上传人:max****ui 文档编号:8615461 上传时间:2020-03-30 格式:PPT 页数:37 大小:467.05KB
返回 下载 相关 举报
do-while语句for语句循环结构的嵌套.ppt_第1页
第1页 / 共37页
do-while语句for语句循环结构的嵌套.ppt_第2页
第2页 / 共37页
do-while语句for语句循环结构的嵌套.ppt_第3页
第3页 / 共37页
点击查看更多>>
资源描述
第十讲 while语句 do while语句 for语句循环结构的嵌套 5 1while循环语句 由while语句构成的循环也称 当 循环 while循环的一般形式如下 while 表达式 循环体语句 图5 1while循环流程图 while语句的执行过程是 先计算while表达式的值 当表达式的值为非零时 便执行循环体语句 之后再计算该表达式的值 由此构成循环 直到有一次求得表达式的值为零时才结束循环 并继续执行循环体语句之外的后续语句 图5 1while循环流程图 while 表达式 循环体语句例 k 0 while k 10 printf k 注意 1 表达式不可省 表达式的值为真的时候 作循环 2 循环体语句 要能改变表达式的值 使其从真变到假 为什么啦 如果循环语句是多条 构成复合语句 执行过程 P50P51 1 2 3 说明 1 while语句中的表达式可以是任意合法的C表达式 2 如果循环体语句是复合语句 一定要用 括起来 3 在循环体语句中应该包含能够使循环趋于结束的操作 以避免出现死循环 例5 1编程求1 2 3 100的值 这是一个求100个数的累加和问题 所加的加数从1变化到100 因此我们可以在循环体中设计一个整型变量i 使它的初值为1 每循环一次使i的值增1 一直循环到i的值超过100为止 用这个办法就解决所需的加数问题 要解决求累加和的问题 还要再设计一个变量sum用来存放这100个数的和值 先求0 1的和并将其放在sum中 然后把sum中的数加上2再存放在sum中 依次类推 在这里 sum累加的过程要放在循环体中 由计算机来判断所加的数是否已经超过100 main inti sum i 1 sum 0 while i 100 sum sum i i printf sum d n sum 程序运行后的输出结果 sum 5050 例5 3程序 求1 2 3 100的值 思考 P51例5 1sum sum i isum 1000自己试写出该程序 程序5 2 用 4 1 1 3 1 5 1 7 1 9 公式求 的近似值 直到最后一项的绝对值小于10 6为止 本题的基本算法也是求累加和 但比例5 1稍为复杂 与例5 1比较 不同的是 1 用分母来控制循环次数 若用n存放分母的值 则每累加一次n应当增2 每次累加的数不是整数 而是一个实数 因此n应当定义成float类型 2 可以看成隔一项的加数是负数 若用t来表示相加的每一项 因此 每加一项之后 t的符号应当改变 这可用交替乘1和 1来实现 3 从以上求 的公式来看 不能决定n的最终值应该是多少 但可以用最后一项t 1 n 的绝对值小于10 6来作为循环的结束条件 程序如下 include math h 调用fabs函数时要求包含math h文件 main ints floatn t pi t 1 0 t中存放每项的值 初值为1 pi 0 pi中存放所求的 的值 初值为0 n 1 0 n中存放每项分母 s 1 0 s中存放每项分子 其值按公式在1和 1之间变化 while fabs t 1e 6 pi pi t n 2 0 s s 改变符号 t s n pi pi 4 printf pi f n pi 程序执行后输出以下结果 pi 3 141397 小组讨论 1 程序5 3 求输入的某个数是否为素数 若是 输出YES 若不是 输出NO 素数是指那些大于1 且除了1和它本身以外不能被其他任何数整除的数 如2 3 5 7 11 都是素数 4 6 8 9 则不是素数 为了判断某数x是否为素数 最简单的方法是用2 3 4 x 1 这些数逐个去除x 看能否除尽 只要能被其中某一个数除尽 x就不是素数 否则 若不能被任何一个数除尽 x就是素数 实际上只要试除到 就已经可以说明x是否为素数了 这是因为如果小于等于的数都不能除尽x 则大于的数也不可能除尽x 试除到 可以减少循环次数 提高程序的运行效率 程序代码如下 include math h main inti x yes a printf Enterintegernumber scanf d yes 1 i 2 a int sqrt double x while yes 当x 2时 因i的初值2大于a while循环根本不执行 yes仍保持为1 输出的素数2 当x 2时 进入循环 若x为素数 yes的值不变 仍为1 若x能被2 的某个数整除 则x不是素数 使yes的值变为0 并且立即退出循环 退出循环后 if的语句判断yes的值为1时 输出YES 否则输出NO 小组讨论 2 P53迭代法 5 3用do while语句构成的循环 由do while语句构成的循环称为 直到型 循环 do while语句的一般形式为 do循环体语句while 表达式 do while语句的执行过程是 先执行循环体语句 再求表达式的值 若表达式的值为 真 非0数值 则再执行循环体语句 由此构成循环 直到表达式的值为 假 数值0 时结束循环 如图所示 试将P51例5 1改为do while语句结构注意点 P54do while语句和while语句的区别在于do while是先执行循环体语句 后判断循环条件 因此do while至少要执行一次循环体 main inti sum i 1 sum 0 do sum sum i i while i 100 printf sum d n sum 用do while语句改写例5 3的程序 题目 求1 2 3 100的值 注意 N S流程图的直到型循环结构的循环条件的描述方法与C语言的do while语句的循环条件的测试方法稍有不同 这里一定要有一个分号 P54例5 4该数列变化的规律 除第一 二项外 后面的各项值为前面两项之和 位置号 1234567数列 11235813f1 f2 f3f1 f2 f3f1 f2 f3f1 f2 f3图5 1for循环运算过程 5 4for语句和用for语句构成的循环 for语句的一般形式为 for 表达式1 表达式2 表达式3 循环体语句 for语句的常规使用方法 表达式1 用来给循环变量赋初值或做一些初始工作 表达式2 用来作为判断循环是否结束的条件 表达式3 用来修改循环变量的值 使得循环能够趋于结束 例如 for k 0 k 10 k printf 以上for循环在一行上输出10个 号 for语句的常规使用方法例P56例5 5 main 程序1 inti sum for i 1 sum 0 i 100 i sum sum i printf sum d n sum 从语法上来讲 三个表达式都可以是任意合法的C表达式 各表达式之间用 隔开 并且这三个表达式都是任选项 例如 我们可以用for循环语句将例5 3的程序改写为如下几种形式 它们都能正确地求出1 2 3 100的值 for语句的非常规使用方法 for语句的非常规使用方法2 注意在循环体语句之前不能有分号 main inti sum 0 for i 1 i 100 i sum sum i printf sum d n sum main inti sum 0 for i 1 i 100 i sum sum i printf sum d n sum 例5 4编程计算多个圆的面积 本例要求计算5个不同半径的圆面积 且半径值的变化是有规律的 从0 5mm开始按增mm的规律递增 可直接用半径r作为for语句的循环控制变量 每循环一次使r的值增0 5 直到r大于2 5为止 main floatr s pi 3 1416 for r 0 5 r 2 5 r 0 5 s pi r r printf r 3 1fs f n r s 试改为 非常规for结构 变量r具有双重功能 它既是循环控制变量 又是圆的半径值 它的值由0 5变化到2 5 循环体共执行5次 当r增到3 0时 条件表达式r 2 5的值为0 从而退出循环 5 5循环结构的嵌套 在一个循环语句的循环体内又完整地包含了另一个循环语句 称为循环嵌套 循环嵌套的书写采用缩进形式 在编写程序时 循环嵌套的书写要采用缩进形式 如在例5 5的程序中 内循环中的语句应该比外循环中的语句有规律地向右缩进2 4列 例5 5循环嵌套的应用 输出九九乘法表 main inti j for i 1 i 9 i for j 1 j i j printf 1d 1d 2d i j i j printf n 程序的运行结果为 1 1 12 1 22 2 43 1 33 2 63 3 94 1 44 2 84 3 124 4 165 1 55 2 105 3 155 4 205 5 256 1 66 2 126 3 186 4 246 5 306 6 367 1 77 2 147 3 217 4 287 5 357 6 427 7 498 1 88 2 168 3 248 4 328 5 408 6 488 7 568 8 649 1 99 2 189 3 279 4 369 5 459 6 549 7 639 8 729 9 81 例5 5程序输出的九九乘法表 程序5 7 求n 即计算1 2 3 n的值 程序代码如下 main inti s n 变量s放置连乘的积 s 1 注意 s的初值为1 printf Entern scanf d 以上程序执行时 若给n输入5 变量i和s中值的变化如表5 1所示
展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


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


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

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


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