《C语言》循环型程序设计.docVIP

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

循环型程序设计 (一)穷举 穷举是一种重复型算法。它的基本思想是,对问题的所有可能状态一一测试,直到找到解或将全部可能状态都测试过为止。 循环控制有两种办法:计数法与标志法。计数法要先确定循环次数,然后逐次测试,完成测试次数后,循环结束。标志法是达到某一目标后,使循环结束。 例1.百钱买百鸡。 公元前五世纪,我国古代数学家张丘建在《算经》一书中提出了“百鸡问题”。鸡翁一值钱五,鸡母一值钱三,鸡雏三值钱一。百钱买百鸡,问鸡翁、母、雏各几何? main() { int cocks,hens,chicks; cocks=0; while(cocks=19) { hens=0; while(hens=33) { chicks=100-cocks-hens; if (5.0*cocks+3.0*hens+chicks/3.0==100.0) printf(“%d %d %d\n”,cocks,hens,chicks); hens=hens+1; } cocks=cocks+1; } } 例2.搬砖问题。 36块砖,36人搬;男搬4,女搬3,两个小孩抬一砖。要求一次全搬完,问男、女、小孩各若干? 例3.百马百担问题: 有100匹马,驮100担货,大马驮3担,中马驮2担,两匹小马驮1担,问有大、中、小马各多少? 例4.打印出所有的“水仙花数”,所谓“水仙花数”是指一个3位数,其各位数字立方和等于该数本身。例如,153是一水仙花数,因为153=13+53+33。 例5.爱因斯坦的阶梯问题。 设有一阶梯,每步跨2阶,最后余1阶;每步跨3阶,最后余2阶;每步跨5阶,最后余4阶;每步跨6阶,最后余5阶;每步跨3阶时,正好到阶梯顶。问共有多少阶梯。 main() { int ladders=7,flag=1; while (flag) { if (ladders%3= =2 ladders%5= =4 ladders%6= =5) flag=0; else ladders=ladders+14; } printf(“该阶梯共有%d阶\n”,ladders); } 循环型程序设计 (二)迭代(递推) 迭代是一个不断有新值取代变量的旧值,或由旧值递推出变量的新值的过程。 例1.人口增长问题。 按年2%的增长速度,现有12亿人,10年后将有多少人? 分析:设现人口数为m,则第一年后人口变为:m*(1+2%) ; 第二年后,把上述赋值表达式再执行一次。要计算10年后的人口,度不是把上述表达式执行10次。 ·初值; m=12 ·迭代公式; m=m*(1+0.02) ·迭代次数; 10次 程序设计如下: main() { float m=12; int i; for (i=1;i=10;i++) m=m*(1+0.02); printf(“10年后人口为:%f亿\n”,m); } 例2.一球从100m高度自由落下,每次落地后反跳回原高度的一半,再落下。求它在第10次落地时,共经过多少m?第10次反弹多高? 例3.1991年我国人口为11.3亿人,如果人口增长率为每年1.35%时,到哪年我国的人口超过13亿? main() { float m=11.3; int n=1991; while (m=13) { m=m*(1+0.0135); n=n+1; } printf(“到%d年我国的人口超过13亿); } 例4.有一张厚0.5毫米,面积任意大的纸,将它不断对折。问对折多少次后,其厚度可达2000米。(注意:2000米=2000000毫米,所以厚度变量应定义成long型)。 例5.求Fibonacci数列前40个数。这个数列有如下特点:第1、2两个数为1、1。从第3个数开始,该数是其前面两个数之和。即数列为:1,1,2,3,5,8,13,21,34,…… (这是意大利数学家Fibonacci曾提出的一个有趣的问题: 设有一对新生兔子,从第三个月开始它们每个月都生一对兔子。按此规律,并假设没有兔子死亡,一年后共有多少对兔子。) 分析:f1=f2=1; 1 fn=fn-1+fn-2; (n=3) 2 式1为赋初值,式2即为迭代公式。用C语言来描述式2为: f=f1+f2; f1=f2; /*为下一次迭代作准备*/ f2=f; 程序设计如下: main() {long f1=1,f2=1,f; int i; printf(“%ld,%ld”,f1,f2); for (i=3;i=4

文档评论(0)

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

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

版权声明书
用户编号:7014141164000003

1亿VIP精品文档

相关文档