网站大量收购独家精品文档,联系QQ:2885784924

4迭代与重复-循环程序设计(1).ppt

  1. 1、本文档共54页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
高级语言程序设计 第4章 迭代与重复—循环程序设计 学习目标: 理解循环的思想 掌握循环结构的三要素 熟练控制循环的方法:计数器控制、标记控制、迭代条件控制等。 熟悉三种循环结构while,do/while,for的使用 学会用多重循环 引言 重复似乎很乏味,但重复给人以希望,重复可以重头再来,重复可以绚丽多彩。很难想象世界要是没有了重复该会变成什么样子。 在前面的问题求解过程中,为了丰富求解过程,已经多次使用了重复 无条件循环 while(1) { ….. } 有条件循环 while ( scanf(“%d”,grade) != EOF ) { ……. } 要解决的问题 1. 打印规则图形 2. 自然数求和与阶乘计算 求解这些问题如果不用重复的思想就比较难解决 问题1:打印规则图形 问题描述:打印如下的规则图案 分析 问题的目标就是输出一个图案,没有输入 怎么做?设计你的算法! 用重复、循环的思想解决 三要素: 重复要做的事情是什么? 重复多少次? 如何控制重复的次数? 控制重复的次数是关键 重复要做的事情是核心 控制重复的方法之一 如果已知要重复的次数 可以通过计数来控制重复 计数控制 怎么样让计算机数数呢? int counter; //定义一个计数器 counter=0; //初始化 counter = counter + 1 //每重复一次,计数器加1 算法设计 1 计数器counter初始化为0; 2 如果 counter 循环次数则执行(3),否则循环结束, 执行 (5) 3 输出一行“********** **********” 4 计数器counter增加1,转到(2) 5 输出结果 算法实现—程序代码 计数控制的while循环结构 while循环中有三个重要的要素: ● 计数器初始化 ● 循环条件:计数器重复的次数为真 ● 计数器更新 思考题 如果计数器初始化为1,循环的另外两个要素是否要做相应的变化?怎么变化? 自增自减运算 –单目运算 计数器加1或减1是经常要做的事 counter = counter + 1; 可以写成 counter ++; 或 ++counter; 注意必须是一个变量才可以 5++ ,(counter+1)++都是错误的 前缀和后缀的区别 自增/自减运算单独出现时,前缀和后缀的效果相同 当自增/自减运算与其它运算混合出现时前缀和后缀截然不同 m = n++; 相当于 m = n; n = n + 1; m = ++n; 则等价于 n = n + 1; m = n; ++,--的结合性(右结合) 设int m,n=3; m = -n++; 因此与 m = -( n++);等价 结果是 m=-3, n=4; 建议不要过多地使用自增或自减,宁愿使用与其等效的简单的多个语句,这样会增加可读性。 问题2:自然数求和 问题描述:求100以内的自然数之和。 即求1 + 2 + 3 + … + 100。 类似的还有:求10的阶乘, 即 10!= 10×9×8×…×2×1。 分析 先考虑求和问题,你怎么求解? 等差数列前n项和公式 s=(1 + 100)*100/2。 还是写 s=1 + 2 + 3 + … + 100 或者 s= 1 + 2 + 3 + (写完整) + 100 有更好的思想方法吗? 迭代重复的思想 不要一口吃个胖子 可以先求一个数的和 s1=0+1 再求 s2=s1+2 s3=s2+3 …… s100=s99+100 显然这是一个重复的过程,重复的次数确定重复的内容明确:累加/重复求和, 统一为 s = s + i ,i=1,…,100 这里有两个量,计数器i,累加器s 算法设计 step1:计数器和累加器初始化 step2:如果计数器的值小于等于重复的次数,执行step3,否则执行step6 step3: 迭代累加 step4:计算器加1 step5:回到step2 step6:输出计算结果 思考?? 为什么这里的计数器从1开始?计数控制条件为什么变成了 i = 100,包括等于在内。 如果离开循环后打印出计数器i的值应该是多少? 阶乘计算 10!= 10×9×8×…×2×1。 大家分析一下 设计一个算法 阶乘程序实现 思考题: 可以算10

文档评论(0)

ajgoaw + 关注
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档