pascal中变量形参的意思
pascal吧
全部回复
仅看楼主
level 2
看了书不明白啊,求讲解,简单点...
顺便问一下,function xx(x:xxxx):xxxx;
之后只加一个begin和end;吗?在主程序开始、function或procedure结束后不需要加begin了吗?如果不为主程序再加一个begin,那程序结尾end.是怎么来的....两个问题,求解,非常感谢
2013年08月28日 11点08分 1
level 2
没人啊,
2013年08月28日 11点08分 2
level 13
举个例子:
function s(k:longint; var y:longint):longint;
begin
if k=1 then y:=trunc(sqrt(k)) else y:=s(k-1,y);
end;
begin {main}
....
end.
在s函数中,k就是形参,即它的值不会改变调用它的程序中的值,形参可以是变量或常量。y就是实参,它的值会改变调用它的程序中的值,实参只能是变量。
2013年08月28日 13点08分 4
知道了!也就是说,k是局部变量,y是全局变量了?
2013年08月29日 09点08分
回复 KeepFight活宝 :两码事……局部变量指的是你在子程序中定义的变量,如LX的t,而全局变量是指你程序一开始在var区定义的变量
2013年08月29日 13点08分
回复 汪靖恒 :这个,我们学校也把这个叫全局变量
2013年08月30日 09点08分
level 7
形参=对变量取值后使用
实参=直接使用变量
2013年08月29日 11点08分 6
level 12
值传递和引用传递什么的……
2013年08月29日 11点08分 7
level 1
我写了这样的程序:
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
1