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

阅读程序写结果之提高篇(c语言版)阅读程序写结果之提高篇(c语言版).pdf

阅读程序写结果之提高篇(c语言版)阅读程序写结果之提高篇(c语言版).pdf

  1. 1、本文档共6页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
阅读程序写结果之提高篇(c语言版)阅读程序写结果之提高篇(c语言版)

苏州工业园区星海实验中学 读程序写结果之提高篇 “读程序写结果”有时会考查选手经典算法的掌握情况及数学知识的应用能力。这类题, 要求选手有较高的综合素质。下面共同探讨一下这两个方面: 技巧七:计算经典问题的重现 同一个问题,考虑的角度不一样,往往可以写出风格完全不一样,甚至算法完全不同 的程序,结果却是相同的:殊途同归。 正因为这样,有些经典问题经常会被拿出来“重写”。在读程序时,应该善于把刚刚看 到的“程序”与自己脑海里的信息进行匹配。 一旦找到自己已有信息里类似、甚至相同的问题时,面对的问题也就迎刃而解。 这些经典问题有:素数、排序、约瑟夫问题、杨辉三角、最大公约数(辗转相除法)、 高精度计算、二分法、求最短路径、拓扑排序、关键路径、欧拉回路、哈密顿回路、最小生 成树、搜索问题等等。 [选例十二 NOIP2007提高组第三题] 1 #includestdio.h 2 #includestdlib.h 3 #includemath.h 4 intmain() 5 { 6 inta1[51]={0}; 7 inti,j,t,t2,n=50; 8 for(i=2;i=sqrt(n);i++) 9 if(a1[i]==0) 10 { 11 t2=n/i; 12 for(j=2;j=t2;j++)a1[i*j]=1; 13 } 14 t=0; 15 for(i=2;i=n;i++) 16 if(a1[i]==0) 17 { 18 printf(%4d,i); t++; 19 if(t%10==0)printf(\n); 20 } 21 printf(\n); 22 23 system(pause); 24 return0; 25 } 输出: [解析]第8 行,求n 的平方根,干嘛用呢?a1[i]原来都为0,第9 至13 行循环里嵌套了第 12行循环:为什么要把i的倍数的下标变量都改为1呢? 其实,这就是经典的筛选法求素数! 第15至20行循环,输出这些素数。变量t 用来控制一行输出10个素数。因此,本例 1 6 第 页 共 页 苏州工业园区星海实验中学 输出结果为:(注意场宽、对齐) 2 3 5 7 11 13 17 19 23 29 31 37 41 43 47 [选例十三 NOIP2007提高组第四题] #includestdio.h #includestdlib.h charch[]={q,A,S,O,R,T,E,X,A,M,P,L,E}; intn=12; voidshift(intk, intn) { charv; intj; v=ch[k]; j=k+k; while(j=n) {if((jn)(ch[j]ch[j+1]))j++; if(vch[j]) { ch[j/2]=ch[j];j*=2; } else return; ch[j/2]=v; } } voidhpsrt(void) { intk; chartmp; for(k=n/2;k0; k--) shift(k,n); /* 建堆 */ printf(No.1:); for(k=1;k=n;k++) putchar(ch[k]); putchar(\n); for(k=n; k0; k--) {tmp=ch[1];ch[1]=ch[k]; ch[k]=tmp; shift(1,k-1); } } intmain() { intk;

文档评论(0)

tazhiq2 + 关注
实名认证
内容提供者

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

1亿VIP精品文档

相关文档