当前位置:IT认证>BASIC题库

问题:[选择题]

[单项选择题] 某人编写了下面的程序 Private Sub Command1_Click()Dim a As Integer,b As Integera=InputBox("请输入整数")b=InputBox("请输入整数")pro apro bCall pro(a+b) End Sub Private Sub pro(n As Integer)While(n>0) Print n Mod 10; n=n10WendPrint End Sub 此程序功能


A.把过程pro的形式参数nAsInteger改为ByValnAsInteger
B.把Callpro(a+改为proa+b
C.把n=n10改为n=n/lO
D.在prob语句之后增加语句c%=a+b,再把Callpro(a+改为proc

参考答案: A

  参考解析

[知识点]参数的传递[评析]形参名前面缺省修饰词,或有“ByRef”关键字时,则指定它是一个按地址传递的参数。按地址传递参数时,形参和实参共用内存的“同一”地址,即共享同一个存储单元,形参值在过程中一旦被改变,相应的实参值也跟着改变。按值传递参数(ByVal),传递的只是实参变量的副本。当采用按值传递时,过程对参数的任何改变实际上都是对栈中值的改变,仅在过程内部有效,而不影响实参变量本身。换句话说,一旦过程运行结束,控制返回调用程序时,对应的实参变量保持调用前的值不变。本题中,过程Subpro(nAsInteger)的形参变量n按地址传递参数。程序执行proa、prob、Callpro(a+b)语句的过程如下:proanPrintnMod10n=n101233121221110程序结束时形参n的值变为0,则实参a的值也变为0。probnPrintnMod10n=n102344232332220程序结束时形参n的值变为0,则实参b的值也变为0Callpro(a+b)此时表达式a+b的值为0,过程pro()没有执行循环,所以不会反序输出变量a+b之和753。要想输出变量a+b的实际输入的值的和,则变量a和b在过程的运行期间必须保持不变,因此形参必须采用传值的方式,故选项A正确。

微信端