VB求大神 VB求详细解答过程,一定要过程详细 我知道答案,要过程
执行下面程序,单击按钮CmdRun,窗体上显示的第一行结果是(10);UBound(a)的值是(11);其中a(1)的值为(12)。OptionExplicitPriva...
执行下面程序,单击按钮CmdRun,窗体上显示的第一行结果是 (10) ;UBound(a)的值是 (11) ;其中a(1)的值为 (12) 。
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)
Print St
For i = 1 To Len(St)
For j = i + 1 To Len(St)
If Mid(St, i, 1) = Mid(St, j, 1) Then Exit For
Next j
If j > Len(St) Then
k = k + 1
ReDim Preserve a(k)
a(k) = Mid(St, i, 1)
Print "a("; k; ")="; a(k)
End If
Next i
End Sub
Private Sub sub1(S As String)
Dim i As Integer
For i = 1 To Len(S) \ 2
Mid(S, i, 1) = Mid(S, Len(S) - i + 1, 1)
Next i
End Sub 展开
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)
Print St
For i = 1 To Len(St)
For j = i + 1 To Len(St)
If Mid(St, i, 1) = Mid(St, j, 1) Then Exit For
Next j
If j > Len(St) Then
k = k + 1
ReDim Preserve a(k)
a(k) = Mid(St, i, 1)
Print "a("; k; ")="; a(k)
End If
Next i
End Sub
Private Sub sub1(S As String)
Dim i As Integer
For i = 1 To Len(S) \ 2
Mid(S, i, 1) = Mid(S, Len(S) - i + 1, 1)
Next i
End Sub 展开
2个回答
展开全部
首先理解传地址:
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语句。
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语句。
展开全部
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
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询