您好,欢迎访问三七文档
鲁迅中学柯桥校区信息学竞赛小组递归练习(1)姓名:得分:1、functionf(n:integer):integer;beginifn=0thenf:=1elseifn0thenf:=f(n+1)+3elsef:=f(n-1)-2;end;则f(1)与f(2)的值分别是多少?-1-32、programll(input,output);vara,b,c,d:integer;procedurep(a:integer;varb:integer);varc:integer;begina:=a+1;b:=b+1;c:=2;d:=d+1;writeln(‘m’,a,b,c,d);ifa3thenp(a,b);writeln(‘n’,a,b,c,d)end;x1243beginm2324a:=1;b:=2;c:=4;d:=3;m3425writeln(‘x’,a,b,c,d);n3425p(a,b);n2425writeln(‘y’,a,b,c,d)y1445end.3、以下程序将输入的10个数按升序排列后,删除其中值相同的元素,使之只保留一个。请从下面对应的一组选择项中选出正确的内容填入空格中。Programmain(input,output);TypeArr=array[1..10]ofinteger;Vara:arr;i,n:integer;Proceduresort(varx:arr;n:integer);Vari,j,p,t:integer;BeginFori:=1ton-1doBeginP:=i;Forj:=(i+1ton)doIf(x[p]x[j])thenp:=j;(ifpIthenbegint:=x[p];x[p]:=x[i];x[i]:=t;end;)end;end;procedurepurge(vara:arr;varn:integer);vari,j:integer;beigni:=n;Whilei1doIfa[i]=a[i-1]thenBeginForj:=itondo(a[j-1]:=a[j];)N:=n-1;(i:=i-1;)endelsei:=i-1;end;beginfori:=1to10doread(a[i]);readln;n:=10;sort(a,n);purge(a,n);fori:=1tondowrite(a[i]:3);writelnend.4、下列程序输入字符串的长度(不为0)和字符串,打印该字符串的所有排列。例如,输入长度为3和ABC时,分别打印出ABCACBBACBCACABCBA。当输入的字符串的长度大于10时,取前10个字符。其中permute为递归过程。Programstrram(input,output);Vari,length:integer;Letter,newword:array[1..10]ofchar;Used:array[1..10]ofBoolean;Procedurepermute(countdown:integer);Varj:integer;BeginIfcountdown=(0)thenBeginForj:=(length)downto(1)dowrite(newword[j]);WritelnEndElseForj:=1to(length)doIfnotused[j]thenBeginUsed[j]:=true;Newword[countdown]:=letter[j];(permute(countdown-1));(used[j]):=falseend;end;beginreadln(length);if(length10)thenlength:=10;fori:=1tolengthdobeginused[i]:=false;read(letter[i])end;permute(length)end.5、programii(input,output);constu:array[1..4]ofinteger=(0,5,3,1);v:array[1..4]ofinteger=(0,7,6,5);vara,b,c,d,e,f,x,y,z:integer;beginread(a,b,c,d,e,f);z:=f+e+d+(c+3)div4;y:=5*d+u[cmod4];if(by)thenbeginz:=z+(b-y+8)div9;x:=((b-y+8)div9*9-(b-y))*4+11*e+v[cmod4];endelsex:=(y-b)*4+11*e+v[cmod4];if(ax)thenz:=z+(a-x+35)div36;writeln(z)end.输入:479205647鲁迅中学柯桥校区信息学竞赛小组递归练习(1)姓名:得分:输出:1266、求m与n的最大公约数varm,n,gcd:integer;functiongys(a,b:integer):integer;varr:integer;beginr:=_amodb__;ifr=0then_gys:=b____else__gys(b,r)__end;beginreadln(m,n);___gcd:=gys(m,n);____;writeln('gcdis:',gcd);end.7、将十进制数n转化为k(k=16)进制整数。constdigit:array[0..15]ofchar='0123456789ABCDEF'varn,k:integer;proceduretentok(n,k:integer);varr:integer;beginr:=nmodk;n:=ndivk;ifn0thententok(n,k);write(digit[r]);end;beginreadln(n,k);tentok(n,k);end.8、阅读程序,该程序读入4,0,2,3,1五个整数序列,回答问题(A)程序执行后输出的结果是(3)(B)若将主程序中的程序调用语句binary(3,a,5)改为binary(5,a,5)程序执行后输出的结果是(notfound),改为binary(0,a,4),程序执行后的结果是(notfound)。(C)若将主程序中的程序调用语句binary(3,a,5)改为如下语句:forI:=1to2dobegint:=a[I];a[I]:=a[5-I+1];a[5-I+1]:=tend;binary(3,a,5);程序执行后输出的结果是Constmaxn=5;typeat=array[1..maxn]ofinteger;varI,t,j:integer;a:at;shift:Boolean;procedurebinary(x:integer;a:at;n:integer);VARlow,high,mid:integer;found:boolean;BeginLow:=1;high:=n;found:=false;While(low=high)and(notfound)doBeginmid:=(low+high)div2;ifxa[mid]thenhigh;=mid-1elseifxa[mid]thenlow:=mid+1elsefound:=trueend;iffoundthenwriteln(a[mid]:5)elsewriteln(‘notfound’)end;beginread(a[1]);forI:=2tomaxndoread(a[i]);forI:=2tomaxndobegint:=a[I];j:=I-1;shift:=true;while(j0)andshiftdobeginifta[j]thenbegina[j+1]:=a[j];j:=j-1;endelseshift:=falseend;a[j+1]:=tend;binary(3,a,5)end.9、programProgram4;varm,n,i,j:integer;p,w,a,b:array[0..19]ofinteger;beginread(n);m:=0;fori:=0ton-1dobeginread(p[i]);b[i]:=1;end;fori:=0ton-1dobeginif(i0)thena[m]:=p[i]-p[i-1]elsea[m]:=p[i];m:=m+1;while((m1)and(a[m-1]=0))dobeginm:=m-1;b[m]:=1;end;if(m0)thenw[i]:=b[m-1]elsew[i]:=b[0];a[m-1]:=a[m-1]-1;forj:=0tom-1dob[j]:=b[j]+1;while((m1)and(a[m-1]=0))dobeginm:=m-1;b[m]:=1;end;end;fori:=0ton-1dobeginwrite(w[i]);write('');end;writeln('');end.输入:94666689999输出:___112451139_________________10、programGxp2;vari,j,s,sp1:integer;p:boolean;a:array[1..10]ofinteger;beginsp1:=1;a[1]:=2;j:=2;whilesp110dobeginj:=j+1;p:=true;fori:=2toj-1doif(jmodi=0)thenp:=false;ifpthenbeginsp1:=sp1+1;a[sp1]:=j;end;end;鲁迅中学柯桥校区信息学竞赛小组递归练习(1)姓名:得分:j:=2;p:=true;whilepdobegins:=1;fori:=1tojdos:=s*a[i];s:=s+1;fori:=2tos-1doifsmodi=0thenp:=false;j:=j+1;end;writeln(s);writeln;end.输出3003111、programp7_9;vara:array[1..7,1..13]ofinteger;i,j,k:integer;beginfori:=1to7dobeginforj:=1to13doa[i,j]:=0;a[i,7-(i-1)]:=1;a[i,7+(i-1)]:=1;fork:=1toi-2dobeginj:=7-(i-1)+2*k;a[i,j]:=a[i-1,j-1]+a[i-1,j+1];end;1forj:=1to13do11ifa[i,j]=0thenwrite('')121elsewrite(a[i,j]:2);1331writeln;14641end;15101051end.161520156112、programp7_22;vara,b:string[99];c:array[1..100]ofchar;i,j,k,sum:integer;carry:boolean;beginreadln(a);readln(b);i:=length(a);j:=length(b);k:=0;carry:=false;while(i=1)or(j=1)dobegink:=k+1;ifi=1thenbeginsum:=ord(a[i])-48;i:=i-1endelsesum:=0;ifj=1thenbeginsum:=sum+ord(b[j])-48;j:=j-1;end;ifcarrythensum:=sum+1;ifsum9thenbegincarry:=true;c[k]:=chr(sum-10+48);endelsebegincarry:=false;c[k]:=chr(sum+48);end;end;ifcarrythenbegink:=k+1;c[k]:='1';end;whilek=1dobeginwrite(c[k]);k:=k-1;end;end.输入396231578313300259581633078503591840204790909833617913、给定
本文标题:递归练习(1)答案
链接地址:https://www.777doc.com/doc-4984769 .html