Module: 子程序:过程和函数 - 1


Problem

12/12

改变论点

Theory Click to read/hide

问题:编写一个交换两个变量值的程序。
此任务的特点是我们需要在过程中所做的更改才能为调用程序所知。

让我们尝试编写这样的程序:

var x, y: 整数; <前> 程序交换(a,b:整数); // 有了这样的过程参数描述, 变量 c:整数; begin // 将复制参数(x 和 y)的值 // 变量 a 和 b 是与 x 和 y 无关的自变量 c := 一个; 一个:=乙; b := c; 结尾; 开始 x := 1;   y := 2; 交换(x,y); //变量x和y(参数)的值被复制到参数a和b中 writeln('x = ', x, ', y = ', y); // x=1, y=2 结尾。 如果你运行这个程序,你可以看到变量xy的值没有改变。为了使参数改变参数的值,您必须使用通过引用传递数据。 为此,在数据类型的名称之后在子例程的标题中,您必须输入单词 var  <前> 过程 Swap(var a, b: integer);   // 现在变量 a 和 b 得到变量 x 和 y 在内存中的地址 var c: 整数;  开始 c := 一个; 一个:=乙; b := c; 结尾; 用法:如果您通过引用传递参数,那么在调用过程时只有变量名(不是数字也不是算术表达式)可以出现在这个地方!< br />
不要调用这样的过程: <前> 交换(x,4); 交换(5+x, y);

Problem

编写一个程序,交换两个变量的值。

查找并更正此过程中的错误