VB求大神 VB求详细解答过程,一定要过程详细 我知道答案,要过程

2025-05-08 02:53:25
推荐回答(2个)
回答(1):

首先理解传地址:
sub1(s as string)等于sub1(byref s as string),即s是传地址的,这里也就是把st的地址传递给s,所以s就是st,s改变,st就改变,它两是同一个东西。
其次理解一个函数一个语句:

Mid(S, i, 1) = Mid(S, Len(S) - i + 1, 1)
这一句中,第一个mid是语句,第二个mid是函数。
第一个mid(s,2,1)="a"就是把字符串s中的第2个字符起的1个字符长度替换为a,
第二个mid(s,1,1)是从字符串S中第1个字符起取1个。
如果还看不懂,百度vb6 mid语句。

回答(2):

Option Explicit
Private Sub CmdRun_Click()
    Dim St As String, i As Integer
    Dim a() As String, j As Integer, k As Integer
    St = "abcd"
    Call sub1(St)  '调用子程序,把"abcd"变成前半截是后半截的反序,即"dccd"
    Print St  '输出dccd
    For i = 1 To Len(St)  'i从1开始到St的长度,即从St的第1个字母开始检查到最后一个字母
        For j = i + 1 To Len(St) 'j从i+1到St的长度,即j代表i的下一个字母开始的所有以后字符
            If Mid(St, i, 1) = Mid(St, j, 1) Then Exit For '如果第i个字符与第j个字符相同,退出循环j
        Next j
        If j > Len(St) Then '如果前面的循环是正常退出,则j=Len(St)+1,
        '这个条件成立,代表在i位之后找不到与i位相同的字符,
        '如果前面的循环是exit for退出的,则j<=Len(St),这个条件不成立
        '代表在i位之后找到了与i位相同的字符
            k = k + 1  '找到没有相重的字符,计数器增加1
            ReDim Preserve a(k) '相应的记录数组也加1
            a(k) = Mid(St, i, 1) '记录之后没有相重的字符--第i个字符
            Print "a("; k; ")="; a(k) '输出当前的计数器和第i个字符
        End If
    Next i
End Sub
Private Sub sub1(S As String)
    Dim i As Integer
    For i = 1 To Len(S) \ 2  'i的变化从1到字串S的一半,即变化字串的前半截
        '把前半截变成后半截的反序
        Mid(S, i, 1) = Mid(S, Len(S) - i + 1, 1)
    Next i
End Sub