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

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

初赛之完善程序变量方面的填空(定义类型、设定初值、变量赋值等)循环方面的填空(定义变量、设定循环的初值和终值、在循环中如何引用)分支转移方面的填空(定义布尔表达式、确定程序的走向)主程序和子程序关系方面的填空(值参、变参、调用格式)输入输出方面的填空不含子程序例一、求元素之和最大的子方阵:在m*n的正整数数字方阵中,找出一个p*q的子阵,使得其元素之和最大。3842211179521621038927123521610382712程序清单Vara:array[1..20,1..20]ofinteger;m,n,p,q,i,j,max,p1,q1,s,i1,j1:integer;Beginfori:=1to20doforj:=1to20doa[i,j]:=0;readln(m,n);fori:=1tomdobeginforj:=1tondoread(a[i,j]);readlnend;readln(p,q);max:=0;程序清单(续)Fori:=1tom-p+1doforj:=1ton-q+1dobegin__(1)___;fori1:=itop+i-1doforj1:=jtoq+j-1do___(2)____;ifsmaxthenbegin___(3)___;p1:=i;q1:=j;end;end;Fori:=p1to___(4)____doBeginforj:=q1to____(5)____dowrite(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子阵,根据上面ifthen子句可知,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,则结束。Varn:integer;first:boolean;Functionfind(n:integer):integer;Vara,b,c:integer;Begina:=1;b:=1;repeatc:=___(1)_____;a:=b;b:=c;untilb=n;ifb=nthenfind:=__(2)__elsefind:=__(3)__End;c=a+bn或ca例(续)Procedurep(n:integer);Vara:integer;begina:=find(n);iffirstthenbeginwrite(a:4);first:=false;endelsewrite(‘+’,a:4);ifanthenp___(4)____;End;beginreadln(n);first:=true;write(n:5,’=‘);p(n);writeln;readlnend.关键在于正确理解函数find与过程P的功能。寻找小于等于n的最大菲波那契数由find函数实现,求出并输出组成n的互不相同的菲波那契数由过程P来完成。过程P是一个递归算法。由题意说明(2)若na,

文档评论(0)

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

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

1亿VIP精品文档

相关文档