当前位置:首页 > 小学信息奥试卷2009年石狮市信息学奥林匹克竞赛普及组试卷
inc(i); end; write(n); end. 输入:9828
输出:_______________________________
25. 阅读以下程序,写出程序的运行结果。 program prog3; const Nmax=100;
var a:array[0..Nmax,0..Nmax] of integer; n,m:integer;
i,j,ans,val:integer; procedure DFS(x,y:integer); begin
if (x<0) or (x>=n) or (y<0) or (y>=m) then exit; if (a[x][y]=0) then exit; a[x][y]:=0;
DFS(x,y-1); DFS(x,y+1); DFS(x-1,y); DFS(x+1,y); end; begin
read(n,m);
for i:=0 to n-1 do for j:=0 to m-1 do read(a[i][j]); ans:=0;
for i:=0 to n-1 do for j:=0 to m-1 do if (1=a[i][j]) then begin DFS(i,j);
ans:=ans+1; end;
writeln('ans=',ans); end. 输入: 5 6
0 1 1 0 0 1 1 1 0 1 0 1 0 1 0 0 1 0 0 0 0 1 1 1 1 0 1 1 1 0
输出:_______________________________
26. 阅读以下程序,写出程序的运行结果。 program prog4;
var a,x:array[0..99] of integer; n,i,tmp,finish:integer; begin read(n);
for i:=1 to n do a[i]:=0; for i:=1 to n do read(x[i]); finish:=0;
while(finish=0) do begin if (n mod 2=1) then begin a[n-1]:=x[n]; i:=n-3;
while(i>=2) do begin a[i]:=x[i+1]-a[i+2]; i:=i-2; end; a[1]:=x[1]-a[2]; i:=3;
while(i<=n) do begin a[i]:=x[i-1]-a[i-2]; i:=i+2; end;
end else begin a[n-1]:=x[n]; i:=n-3;
while(i>=1) do begin a[i]:=x[i+1]-a[i+2]; i:=i-2; end; a[2]:=x[1]-a[1]; i:=4;
while(i<=n) do begin a[i]:=a[i-1]-a[i-2]; i:=i+2; end; end;
for i:=1 to n do begin
tmp:=a[i]; a[i]:=x[i]; x[i]:=tmp; if (x[i]<0) then finish:=1; end; end;
for i:=1 to n do write(a[i],' '); writeln(); end.
输入:5 5 10 1 9 0
输出:_______________________________
四. 完善程序 (每空3分,共30分)
27. 函数MaxMin求出数组a中的最大值和最小值,其中参数n为数组a中的元素个数。参数min带回最小值,通过函数MaxMin返回最大值max。请填空实现上述功能。 program prog5;
type arr=array[0..6] of integer; var a:arr=(4,6,12,2,9,5,10); min:integer;
function MaxMin(n:integer;var min:integer):integer; var max,i:integer;
begin
max:=a[0]; ;
for i:=1 to n-1 do begin
if (a[i]>max) then max:=a[i] else if ( ) then min:=a[i]; end;
MaxMin:=max; end; begin
writeln('max value is ',MaxMin(7,min)); writeln('min value is ',min); end.
28. 求全排列中下一个排列的算法:
设当前排列为P1 P2 ,…,Pn,则下一个排列可按如下算法完成:
(1).求满足关系式Pi-1 < Pi 的i的最大值,设为mi,即mi=max{i | Pi-1 < Pi , i = 2..n} (2).求满足关系式Pmi-1 < Pj的j的最大值,设为mj,即mj=max{j | Pmi-1 < Pj , j = mi..n} (3).Pmi-1与Pmj互换得 (P) = P1 P2 ,…, Pn
(4).{P} = P1 P2 ,…, Pmi-1 Pmi,…, Pn部分的顺序逆转,得P1 P2 ,…, Pmi-1 Pn Pn-1,…, Pmi便是下一个排列。
(5). 当mi=1的时候,需要特殊处理。 例:设P1 P2 P3 P4 =3421
(1).mi= max{i | Pi-1 < Pi , i = 2..n} = 2 (2).mj=max{j| Pmi-1 < Pj , j =1..n} = 2 (3).P1 与P2 交换得到4321
(4).4321 的321 部分逆转得到4123 即是3421 的下一个排列。 请填空实现上述功能。 program prog6;
type arr=array[0..19] of integer;
共分享92篇相关文档