单选题 为达到把a、b中的值交换后输出的目的,某人编程如下:
Private Sub Command1_Click()
a%=10:b%=20
Call swap(a,B)
Print a,b
End Sub
Private Sub swap(ByVal a As Integer,ByVal b As Integer)
c=a:a=b:b=c
End Sub
在运行时发现输出结果错了,需要修改。下面列出的错误原因和修改方案中正确的是( )。

【正确答案】 C
【答案解析】[解析] 本题考查参数传递。VB过程调用中,参数有两种传递方式:传址传递和传值传递。如果在过程声明时形参用ByVal声明,说明此参数为传值调用;若用ByRef声明,说明此参数为传址调用;没有说明传递类型,则默认为传址传递(即形参的结果会传递给实参)。本题中为了实现数据的交换,要求进行传址调用,因此形参前面不应用ByVal声明。