柠檬试题库
search
首页 计算机 公务员 驾照 关于

某人编写了下面的程序: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 此程序功能是:输入2个正整数,反序输出这2个数的每一位数字,再反序输出这2个数之和的每一位数字。例如:若输入123 和234,则应该输出: 3 2 1 4 3 2 7 5 3 但调试时发现只输出了前2行(即2个数的反序),而未输出第3行(即2个数之和的反序),程序需要修改。下面的修改方案中正确的是( )。


  • 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
热度🔥751
参考答案:A
解析:

【解析】在过程定义中过程的形式参数定义时如果没有ByVal指明参数的传递方式,那么默认为地址传递,这样过程中对形参的改变将影响到实参的值。本程序中过程定义语句 Private Sub pro(n As Integer)说明形参n为按地址传递的,而在过程内语句n=n\10改变了形参的值,因此,a、b的值就不再是最初输入的值了,表达式a+b就不是期望的两个输入数的和。因此得不到正确结果。只要把Private Sub pro(n As Integer)改为Private Sub pro(ByVal n As Integer),程序即可得到正确结果,因此A选项正确。
复制题目向AI提问