我写了这样的程序:
program dff;
type
arr=array[1..10000] of integer;
var
a,b:array[1..10000] of integer;
i,n,t,s,ans,af,ar,bf,br:integer;
f:boolean;
function sum(xy,nn:integer):integer;
begin
sum:=(xy mod nn)+1;
end;
procedure js(var x,y:arr; var xf,xr,yf,yr,s1,ans1:integer);
var
xx,yy,xy:integer;
begin
s1:=x[sum(xf,n)]+x[sum(xf,n)+1];
ans1:=ans1+s1;
y[sum(yr,n)]:=s1;
yr:=sum(yr,n);
xf:=sum(xf,n)+1;
while sum(xf,n)<xr do
begin
xx:=x[sum(xf,n)]+x[sum(xf,n)+1];
yy:=y[sum(yf,n)]+y[sum(yf,n)+1];
xy:=x[sum(xf,n)]+y[sum(yf,n)];
if (xx<yy) and (xx<xy) then
begin
ans1:=ans1+xx;
xf:=sum(xf,n)+1;
yr:=sum(yr,n);
y[yr]:=xx;
end
else
if (yy<xx) and (yy<xy) then
begin
inc(ans1,yy);
yf:=sum(yf,n)+1;
yr:=sum(yr,n);
y[yr]:=yy;
end
else
begin
inc(ans1,xy);
xf:=sum(xf,n);
yf:=sum(yf,n);
yr:=sum(yr,n);
y[yr]:=xy;
end;
end;
end;
begin
readln(n);
af:=0; ar:=0; bf:=0; br:=0; s:=0; ans:=0;
for i:=1 to n do
begin
ar:=sum(ar,n);
read(a[ar]);
end;
f:=true;
while f do
begin
f:=false;
for i:=1 to n-1 do
if a[i]>a[i+1] then
begin
f:=true;
t:=a[i];
a[i]:=a[i+1];
a[i+1]:=t;
end;
end;
if n>1 then
repeat
if sum(bf,n)=br then js(a,b,af,ar,bf,br,s,ans)
else js(b,a,bf,br,af,ar,s,ans);
until (sum(af,n)+1>=ar) or (sum(bf,n)+1>=br);
writeln(ans);
end.
过程里用的都是变量形参,可是主程序中a,b,af,ar,bf,br的值都没有变,这是为什么?哪位大神帮我看看
2016年01月03日 10点01分
8