有下面的程序:
Private Sub Command1_Click()
Dim a As Integer, b As Integer
a=InputBox("请输入整数")
b=InputBox("请输入整数")
pro a
pro b
Call pro(a+b)
End Sub
Private Sub pro(n As Integer)
While (n>0)
Print n Mod 10
n=n\10
Wend
Print
End Sub
此程序功能是:输入两个正整数,反序输出这两个数的每一位数字,再反序输出这两个数之和的每一位数字。例如:若输入123和234,则应该输出:
432
753
但调试时发现只输出了前两行(即两个数的反序),而未输出第三行(即两个数之和的反序),程序需要修改。下面的修改方案中正确的是
A.把过程pro的形式参数n As Integer改为ByVal n As Integer
B.把Call pro(a+b)改为pro a+b
C.把n=n\10改为n=n/10
D.在pro b语句之后增加语句c%=a+b,再把Call pro(a+b)改为pro c
参考答案:A
解析: 造成输出结果与预期不一致的原因是原来的程序中过程pro采用传地址的方式传递参数,执行pro过程时n与实参共享同一地址空间,输出每一个数字结束时n都变成了0,这样在反序输出a和b的值之后,变量a和变量b的值都为0,反序输出其和值时,相当于调用了callpro(0)语句,自然就没有输出内容。修改时只需将参数传递方式改为传值即可,故本题答案为A。