VB求解,题目如下

2024-11-29 12:34:37
推荐回答(4个)
回答1:

在form-click中定义了局部变量a
在这个局部中没有对a进行赋值,那么a在该过程中一直就是0
这种问题可以试一下按f8 运行一下看一下 几个变量的值

回答2:

Private a%, b%, c%

Private Sub Form_Click()
Dim a As Integer '此处的变量a屏蔽了开始定义的全局变量,本过程中的a都是这里定义的a
c = 2
Call AA(c)
b = BB(a)
Print a, b, c‘在这之前,a只是被定义,没有被赋值,默认值就是0
End Sub

函数 aa和bb就是参数的不同,一个传值,一个传址
byval 传值,byref传址,默认是传址
传值,仅仅把变量的值传递过去,并不会影响变量的值
传址,把变量的地址传过去,对变量的操作,直接影响变量
一个a瓶,一个b瓶
传值就好似,你问我a瓶有多少水,我告诉说是半瓶,你自准备一个瓶子c,然后装半瓶水,开始操作
传址就是,我直接把瓶子给你了,你的操作肯定会使我的瓶子的水量发生变化
还有涉及到一个问题就是变量的作用域,即一个变量能够起作用的范围。

回答3:

i=1 j=1 string(1,66)=B
i=2 j=1 string(2,67)=CC
i=2 j=2 string(2,67)=CC
string(Number as Long,Character)
Number是输出字符个数,Character是字符ASCII码
MSDN中
返回 Variant (String),其中包含指定长度重复字符的字符串。

语法String(number, character)

String 函数的语法有下面的命名参数:

number
必要参数;Long。返回的字符串长度。如果 number 包含 Null,将返回 Null。

character
必要参数;Variant。为指定字符的字符码或字符串表达式,其第一个字符将用于建立返回的字符串。如果 character 包含 Null,就会返回 Null。

如果指定 character 的数值大于 255,String 会按下面的公式将其转为有效的字符码:character Mod 256

回答4:

这道题涉及到变量的作用域,和函数参数的 传值 与 传址 的问题。
其实它输出的a并不是全局变量a。再告诉你个我做这种题的方法
把与全局变量同名的局部变量全部换掉。来看
'把Form_Click中的局部变量 a 换成 x (记得全部换哦。把有a的地方都换了)
Private Sub Form_Click()
Dim x As Integer
c = 2
Call AA(c)
b = BB(x)
Print x, b, c '看吧,输出的不是全局变量a
End Sub
'把Sub AA(c%)中的局部变量 c 换成 y (记得全部换哦。AA(c%)中的c也换了)
Public Sub AA(y%) '这是传址,y的值会影响到传进来的变量的值。
a = y + b '如本题传入c,最后c的值就会=y的值
y = a + y
End Sub
'把Function BB(ByVal b%)中的局部变量 b 换成 z (BB(ByVal b%)中的b也换了)
Public Function BB(ByVal z%) '这是传值,z的值不会影响到传进来的变量的值。
z = z + 1 '如本题传入x,最后z=1, x 还是=0
BB = a + z '这里的BB不要换啊。呵呵 我们只换b
End Function
'经过这样转换,再一分析 如果我没算错的话,输出的应该是 0 3 4