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

信息学竞赛辅导初赛之完善程序.pptVIP

  1. 1、本文档共22页,可阅读全部内容。
  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文档。上传文档
查看更多
变量方面的填空(定义类型、设定初值、变量赋值等) 循环方面的填空(定义变量、设定循环的初值和终值、在循环中如何引用) 分支转移方面的填空(定义布尔表达式、确定程序的走向) 主程序和子程序关系方面的填空(值参、变参、调用格式) 输入输出方面的填空 不含子程序 例一、求元素之和最大的子方阵:在m*n的正整数数字方阵中,找出一个p*q的子阵,使得其元素之和最大。 3 8 4 22 11 1 7 9 5 21 6 2 10 3 8 9 2 7 12 3 5 21 6 10 3 8 2 7 12 程序清单 Var a:array[1..20,1..20] of integer; m,n,p,q,i,j,max,p1,q1,s,i1,j1:integer; Begin for i:=1 to 20 do for j:=1 to 20 do a[i,j]:=0; readln(m,n); for i:=1 to m do begin for j:=1 to n do read(a[i,j]);readln end; readln(p,q); max:=0; 程序清单(续) For i:=1 to m-p+1 do for j:=1 to n-q+1do begin __(1)___; for i1:=i to p+i-1 do for j1:=j to q+j-1 do ___(2)____; if smax then begin ___(3)___; p1:=i;q1:=j;end; end; For i:=p1 to ___(4)____ do Begin for j:=q1 to ____(5)____do write(a[i,j]:3);writeln;end;readln; end. 本题的关键是找出所有的p×q子阵,并逐一比较。 因此,程序的第二段对给出的m,n及p,q,用二重循环控制p×q子阵左上角元素的下标[i,j]。 再用二重循环控制以[i,j]为左上角元素下标的p×q子阵元素a[i1,j1],并累加求和。 因此(2)处语句为s:=s+ a[i1,j1]。 为了避免重复求和,s的初值应为0,其位置应在累加之前,因此(1)处为s:=0。 填空(3),根据判断条件smax可知,是要记录当前元素之和最大的值,因此填q+q1-1。 最后一段是输出p×q子阵,根据上面if then子句可知,p1,q1记录了当前元素之和最大子阵的左上角位置。 该子阵的行从p1到p+p1-1,列从q1到q+q1-1,因此(4)处为p+p1-1,(5)处为q+q1-1。 完善含有子程序的程序 例、 输入任意一个正整数n,输出组成n的互不相同的菲波那契数。 算法说明: (1)寻找小于等于n的最大菲波那契数a,并以a作为组成n的一个数; (2)若na,则以n-a作为n的新值,重复步骤(1);若a=n,则结束。 Var n:integer; first:boolean; Function find(n:integer):integer; Var a,b,c:integer; Begin a:=1;b:=1; repeat c:=___(1)_____;a:=b;b:=c; until b=n; if b=n then find:=__(2)__ else find:=__(3)__ End; c=a+b n或c a 例(续) Procedure p(n:integer); Var a:integer; begin a:=find(n); if first then begin write(a:4);first:=false;end else write(‘+’,a:4); if an then p___(4)____; End; begin readln(n);first:=true;write(n:5,’=‘);p(n);writeln; readln end. 关键在于正确理解函数find与过程P的功能。 寻找小于等于n的最大菲波那契数由find函数实现,求出并输出组成n的互不相同的菲波那契数由过程P来完成。 过程P是一个递归算法。 由题意说明(2)若na,则n-a作为n的新

文档评论(0)

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

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

1亿VIP精品文档

相关文档