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

循环算法总结.docVIP

  1. 1、本文档共9页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
循环算法总结

第四章 循环 主要语法: while语句,for语句,do while语句,以及break与continue,具体语法看书或者课件 主要思想:能循环执行的东西一定是重复的东西,所以重要的是找出步骤当中重复的地方 例如 打印出一行 ***** ,则可以看成是重复打印*号五次,则重复的地方就在于打印*号,重复五次如何实现呢?基本思想是用一个变量控制,从一数到五则表示五次 i=1; while(i=5) { printf(*); i++; } 或者用 for(i=1;i=5;i++) printf(*); 注意的地方:while 以及for语句 执行循环体的时候默认只有一个语句,如果想让多句语句循环执行,则必须加{}变成复合语句 本章主要算法: 1.迭代算法 累加题目: s=1+2+3+…..+100 可以看成是 +1 +2 +3 +…… +100 所以重复的地方在于每次加上一个数,那每次加的数不一样我们可以用一个变量来表示,比如说i,则每次的动作就可以总结为+i,但是每次加完要去改变i的值,即i要自加1,至于累加则用累加器:sum=sum+ 则每次的动作可以总结为 sum=sum+i;一共累加100次 则程序可以表达为 sum=0; for(i=1;i=100;i++) sum=sum+i; 所以循环注意的三个地方: 循环体也就是重复的地方是什么 重复的次数也就是循环终止的条件 循环的初始值 s=2+22+222+2222+…. 这道题目是上道题目的延伸,也是每次加上一个数,每次加的数不一样我们也可以用一个变量例如t来表示,则每次的累加可以表示为 sum=sum+t; 如果要累加n项,那么就是循环n次, 那么如果t=2,那下次要想再用t的变量来表示加上22,则它们之间的关系应该是t=t*10+2;所以循环里面要做的重复的事情是 每次进行累加,即 sum=sum+t; 累加完还要为下一次累加做准备,即是 t=t*10+2 sum=0;t=2 for(i=1;i=n;i++) { sum=sum+t; t=t*10+2; } 循环的初始值可以把第一次循环代进去得到,程序写完必须把第一次循环以及第二次循环跟最后一次循环执行一遍,看对不对。 s=1+2!+3!+4!+….+n! 此道题目也是累加,则也是sum=sum+t,那么每次累加的值不一样,则可以用t=t*i来表示,累加n项则是循环n遍 Sum=0;t=1; for(i=1;i=n;i++) {sum=sum+t; t=t*(i+1); } 这道题目要注意的地方,t跟i有关系,所以如果是先累加再计算下一项的话,应该是t=t*(i+1);因为比如i=1时,要算的下一项是1*2,所以应该是t*2,也就是t*(i+1);所以当循环变量i与里面的累加项还有关系的时候要注意与i的关系,这个程序也可以改为 Sum=0;t=1; for(i=1;i=n;i++) { t=t*i; sum=sum+t;} 自己考虑下两个程序的差别,语句的顺序不一样所带来的影响。 s=1+x/1-x2/2!+x3/3!-…..xn/n! 前后两项之间的关系是 t=t*(-1)*x/i; sum=1;t=-1; for(i=1;i=n;i++) { t=t*(-1)*x/i sum=sum+t; } 或者 sum=1;t=x; for(i=1;i=n;i++) { sum=sum+t; t=t*(-1)*x/(i+1) } 猴子吃桃P129 6.10 猴子第一天摘下若干个桃子,当即吃了一半,又多吃了一个。以后每天早晨猴子都吃掉前一天剩下的一半多一个。到第10天,猴子再去吃桃子时发现只剩下1个桃子。问第一天猴子摘了多少个桃子? 分析题目可以发现如果后一天是n个,那么前一天将是(n+1)*2 所以已知第十天是1个,则可以根据规则算出第九天到第一天的数 n=1 for(i=9;i=1;i++) n=(n+1)*2; 整数逆序输出 :输入1234输出4321 要想逆序输出,则分析这道题目的算法,找出重复的地方: 1234%10 输出4 123%10 输出3 12%10 输出2 1%10 输出1 则重复的地方在于 %10,每次被除的数不一样,可以用变量例如x来代替,那么前后两项之间的关系则是 x=x/10; while(x!=0) {printf(“%d”,x%10); x=x/10 } 当x是个位数的时候应该是最后一次输出,那么输

文档评论(0)

panguoxiang + 关注
实名认证
文档贡献者

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

1亿VIP精品文档

相关文档