某人编写了下面的程序: Private Sub Command l—Click() Dim a As Integer,b As Integer a=lnputBox(“请输入整数”) b=InputBox(“请输入整数”)

admin2020-07-22  53

问题 某人编写了下面的程序:
Private Sub Command l—Click()
    Dim a As Integer,b As Integer
    a=lnputBox(“请输入整数”)
    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\l0
    Wend
    Print
    End Sub
    此程序功能是:输入2个正整数,反序输出这2个数的每一位数字,再反序输出这2个数之和的每一位数字。例如:若输入123和234,则应该输出:
    3  2  l
    4  3  2
    7  5  3
    但调试时发现只输出了前2行(即2个数的反序),而未输出第3行(即2个数之和的反序),程序需要修改。下面的修改方案中正确的是(     )。

选项 A、把过程pro的形式参数n As Integer改为ByVal 11 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

解析 在过程定义中,过程的形式参数定义时如果没有ByVal指明参数的传递办式,那么默认为地址传递,这样过程中形参的改变将影响到实参的值。本程序中过程定义语句PIqvate Sub pro(n As Integer)说明形参n为按地址传递的,而在过程内语句n=n\10改变r形参的值,因此,a、b的值就不再是最初输入的值了,表达式a十b就不是期望的两个输入数的和。因此得不到正确结果。只要把Prirate Sub pro(n As Integer)改为I)rivate Sub pro(ByVal n As Integer),程序即可得到正确结果,因此A选项正确。
转载请注明原文地址:https://kaotiyun.com/show/TDHp777K
0

最新回复(0)