问题 单项选择题

下列程序段执行时在屏幕上显示的结果是( )。 x1=20 x2=30 SET UDFPARMS TO VALUE DO test WITH x1, x2 x1, x2 PROCEDURE test PARAMETERS a,b x=a a=b b=x ENDPRO

A.30 30

B.30 20

C.20 20

D.20 30

答案

参考答案:B

解析: 调用模块程序一般有两种格式。 格式1:DO<文件名>|<过程名> WITH<实参1>[,<实参2>,…] 格式2:<文件名>|<过程名>(<实参1>[,<实参2>,…])。 本题是利用格式1的方式调用模块程序。采用格式1调用模块程序时,如果实参是常量或一般形式的表达式,系统会计算出实参的值,并把它们赋值给相应的形参变量。这种情形称为按值传递。如果实参是变量,那么传递的不是变量的值,而是变量的地址。这是形参和实参实际上是同一个变量,在模块程序中对形参变量值的改变,同样是对实参变量值的改变。这种情形称为按引用传递。 采用格式2调用模块程序时,默认情况下都以按值方式传递参数,如果要改变传递方法,必须通过SET UDFPARMS TO VALUE | REFERENCE命令进行设置,TO VALUE表示按值传递,TOREFERENCE表示按引用传递。 需要注意的是,用格式1调用模块程序时的参数传递方式不受SET UDFPARMS设置的影响。所以本题属于按引用传递方式,由于模块test的功能是交换形参a和b的值,当以x1和x2为实参调用test模块后,相当于将实参x1和x2的值交换。

单项选择题 A1型题
填空题