C_C程序设计李云峰第3章节结构化程序设计幻灯片.pptVIP

C_C程序设计李云峰第3章节结构化程序设计幻灯片.ppt

  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文档。上传文档
查看更多
PPT研究院 POWERPOINT ACADEMY * * * * * * * * 4. 程序实现 # includestdio.h main() { int cock,hen,child; for(cock=0;cock=20;cock++) for(hen=0;hen=33;hen++) for(child=0;child=100;child++) if(cock+hen+child==l00cock*5+hen*3+child/3.0==100) printf(“cock=%d,hen=%d,child=%d\n”,cock,hen,child); } 3.5.1 百钱买百鸡 1. 案例描述 爱因斯坦出了这样一道数学题:设有一条长阶梯,若每步 跨2阶,则最后剩1阶,若每步跨3阶,则最后剩2阶,若每步跨5 阶,则最后剩4阶,若每步跨6阶,则最后剩5阶,只有每次跨7 阶,最后才正好一阶不剩。问这条阶梯共有多少阶? 2. 案例分析 由已知条件:“每步跨2阶,最后余1阶”可知,阶梯数为 奇数;由“每步跨7阶时,最后正好到达阶梯顶”可知,阶梯数 为7的倍数。综合以上两个已知条件,阶梯数应为7的奇数倍数. 这时可以用穷举法对所有可能的数:7,21,35,49,…一一 进行测试,其中总有一个是我们要求得的结果。 3.5.2 爱因斯坦的阶梯问题 3. 算法描述 我们可把该问题抽象成一个如下数学表达式: x mod 2=1 x mod 3=2 x mod 5=4 x mod 6=5 x mod 7=0 从该表达式不难发现x 一定是7的整数倍,因为x mod 7 =0,由此不难得到解决该问题一个简单而直观的方法: if(x mod 2=1)and(x mod 3=2)and(x mod 5=4)and(x mod 6=5)and(x mod 7=0) 最先得到的满足上述方程式的x值即为本题的答案。 3.5.2 爱因斯坦的阶梯问题 4. 程序实现 # include stdio.h main( ) { int n=7; while(n%3!=2||n%5!=4||n%6!=5) n=n+14; printf(“The result of Einstein’s question is:%d\n”,n); } [运行程序] The result of Einstein’s question is:119 3.5.2 爱因斯坦的阶梯问题 3.5.3 验证歌德巴求赫猜想 1. 案例描述 德国数学家哥德巴赫(Goldbach)在1725年写给欧拉(Euler) 的信中提出了以下猜想:任何大于2的偶数都是两个素数之和( 俗称为1+1)。两个多世纪过去了,这一猜想既无法证明,也没 有被推翻。试设计程序验证指定区间[c,d]上这—猜想是否成 立。这是一道世界性的数学难题,至今未能完全解决。我国著 名数学家陈景润为哥德巴赫猜想的证明作出过杰出的贡献。 2. 案例分析 设x是偶数,我们只要能够找到两个素数y,z,使其和等于 x,即x=y+z。具体编程时,y首先取最小的素数2,然后测试z =x—y是否是素数。如果z是素数,验证成功,否则,y取下一 个素数,再测试z=x—y是否是素数。据此一直进行下去,直到 验证成功为止。 3. 算法描述 对于[c,d]上的所有偶数i,分解为奇数j与k=i-j(j=3,5,…,i/2) 之和。用试商法对奇数j、k作检验判别,即用奇数x(3,5,…, sqrt(k))试商j与k(试商j*k即可)。 若存在x整除j*k(标记t=1),则j增2,用一组新的奇数j、k 再试。 若对某一组奇数j、k,上述所有指定的x都不能整除j*k,则 偶数i找到分解的素数j、k,打印分解和式。 若某—偶数i穷举的所有奇数分解式都不存在同时为两素数 情形,即已找到反例,推翻了哥德巴赫猜想。打印找到反例信息 (作为完整的验证程序设计,这—步骤不能省)。 3.5.3 验证歌德巴求赫猜想 4. 程序实现(部分代码) if(c%2!=0) c++; for(i=c;i=d;i+=2) { j=1; while(j=i/2) { j=j+2;k=i-j; t=0; //加把i分解为两整数j与k之和

您可能关注的文档

文档评论(0)

带头大哥 + 关注
实名认证
文档贡献者

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

1亿VIP精品文档

相关文档