1. PROGRAM test (input, output);
VAR a,b,c : integer;
PROCEDURE p(VAR x : integer; y : integer);
VAR m,n : integer;
BEGIN
m := x * y;
x := x + 5;
y := y + 5;
n := x * y;
writeln (m:4, n:4)
END;
BEGIN
a := 3; b := 3;
p (a,b);
p (a,b);
END.
2. PROGRAM test (output);
VAR a,b : integer;
PROCEDURE p1 (a : integer);
VAR b : integer;
BEGIN
b := a + 5;
writeln (a:3, b:3);
a := b + 5
END;
BEGIN
a := 1; b := 2;
p1 (b);
writeln(a:3, b:3)
END.
3. PROGRAM exam (input, output);
VAX x,y : integer;
PROCEDURE a;
VAX x : integer;
BEGIN
writeln (x:1, ‘,’, y:1)
END;
BEGIN
x := 1; y := 2;
a
END.4. PROGRAM ex ( input, output);
VAR
a, b : integer;
PROCEDURE p (VAR y : integer; x : integer);
BEGIN y := y DIV x;
writeln (a, b, x, y)
END;
BEGIN
a :=3; b := 6;
writeln (a, b);
p (a, b);
writeln (a, b)
END.5. PROGRAM ex (input, output);
VAR
a, b : integer;
PROCEDURE change (VAR x : integer; y : integer);
VAR temp : integer;
BEGIN
temp := x;
x := y;
y := temp;
writeln (x ,y)
END;
BEGIN
a := 3; b := 6;
writeln (a ,b);
change (a, b);
writeln (a, b);
END.6. PROGRAM exam (output);
VAR a, b, c : integer;
PROCEDURE proc (VAR a : integer; b : integer);
BEGIN
a := 1; b := 2, c :=3
END;
BEGIN
a := 5; b := 6; c := 7;
proc (a, b);
writeln (a : 2, b : 2, c : 2)
END.
VAR a,b,c : integer;
PROCEDURE p(VAR x : integer; y : integer);
VAR m,n : integer;
BEGIN
m := x * y;
x := x + 5;
y := y + 5;
n := x * y;
writeln (m:4, n:4)
END;
BEGIN
a := 3; b := 3;
p (a,b);
p (a,b);
END.
2. PROGRAM test (output);
VAR a,b : integer;
PROCEDURE p1 (a : integer);
VAR b : integer;
BEGIN
b := a + 5;
writeln (a:3, b:3);
a := b + 5
END;
BEGIN
a := 1; b := 2;
p1 (b);
writeln(a:3, b:3)
END.
3. PROGRAM exam (input, output);
VAX x,y : integer;
PROCEDURE a;
VAX x : integer;
BEGIN
writeln (x:1, ‘,’, y:1)
END;
BEGIN
x := 1; y := 2;
a
END.4. PROGRAM ex ( input, output);
VAR
a, b : integer;
PROCEDURE p (VAR y : integer; x : integer);
BEGIN y := y DIV x;
writeln (a, b, x, y)
END;
BEGIN
a :=3; b := 6;
writeln (a, b);
p (a, b);
writeln (a, b)
END.5. PROGRAM ex (input, output);
VAR
a, b : integer;
PROCEDURE change (VAR x : integer; y : integer);
VAR temp : integer;
BEGIN
temp := x;
x := y;
y := temp;
writeln (x ,y)
END;
BEGIN
a := 3; b := 6;
writeln (a ,b);
change (a, b);
writeln (a, b);
END.6. PROGRAM exam (output);
VAR a, b, c : integer;
PROCEDURE proc (VAR a : integer; b : integer);
BEGIN
a := 1; b := 2, c :=3
END;
BEGIN
a := 5; b := 6; c := 7;
proc (a, b);
writeln (a : 2, b : 2, c : 2)
END.
因为声明用了var关键字,所以,要考虑a,b 在函数内的增量就可以了
2.要考虑外部函数和内部函数中有同名的变量的处理
同名函数应用在各自的函数内部,不会互相影响的就可以了
3.同2一样
4.以下都差不多,只要小心点就不会错的,很简单
PROCEDURE p( x : integer; y : integer); ?谁给详细解释一下?
在过程中不可以使用 x := ....
PROCEDURE p(Var x : integer; y : integer);
在过程中可以使用 x := .... p执行以后x的值是新值
PROCEDURE p( x : integer; y : integer);
在过程中可以使用 x := .... 但p执行以后x值还是调用p之前的
begin
{...}
end; procdure callp();
var
y :integer ;
begin
y := 3 ;
p(y);
end;//上面的,过程p不会再为x分配内存,如果p内部修改了x,那么callp 中的 y 会被直接修改。因为x和y指向的是同一个内存地址。是双向的。procedure p(x: integer) ;
begin
{...}
end; //过程p会为x重新分配内存,对x的修改不会影响传入的值。也就是说是单向的。
好像是考试题啊