vb题,求具体过程和注意点
运行程序,在文本框Text1中输入用空格分隔的4位二进制数1001、0101和0110。单击“处理”按钮,在多行文本框Text2中第一行显___(10)___,第二行显示...
运行程序,在文本框Text1中输入用空格分隔的4位二进制数1001、0101和0110。单击“处理”按钮,在多行文本框Text2中第一行显___(10)___,第二行显示___(11)___ ,第三行显示___(12)___
Option Explicit
Private Sub Cmd1_Click0
Dim S(3) As String,n As Integer
Dim i As Integer,k As Integer
k=1
For i=1 T0 3
S(i)=Mid(Text1,k,4)
k=k+5
Call Transform(n,S(i))
Text2=Text2 & n &vbCrLf
Next i
End Sub
Private Sub Transform(n As Integer,S As String)
Dim k As Integer,i As Integer,L As Integer
L=Len(S)
If Val(Mid(S
,
1
,
1))=1 Then
n=-(2^(L-1))
Else
n=0
End If
For i=2 To L
k=Mid(S
,
i
,
1)
n=n+k*2^(L-i)
Next i
End Sub 展开
Option Explicit
Private Sub Cmd1_Click0
Dim S(3) As String,n As Integer
Dim i As Integer,k As Integer
k=1
For i=1 T0 3
S(i)=Mid(Text1,k,4)
k=k+5
Call Transform(n,S(i))
Text2=Text2 & n &vbCrLf
Next i
End Sub
Private Sub Transform(n As Integer,S As String)
Dim k As Integer,i As Integer,L As Integer
L=Len(S)
If Val(Mid(S
,
1
,
1))=1 Then
n=-(2^(L-1))
Else
n=0
End If
For i=2 To L
k=Mid(S
,
i
,
1)
n=n+k*2^(L-i)
Next i
End Sub 展开
2个回答
展开全部
Option Explicit
Private Sub Cmd1_Click()
Dim S(3) As String, n As Integer
Dim i As Integer, k As Integer
k = 1
For i = 1 To 3
S(i) = Mid(Text1, k, 4) '从Text1中第k位取4个字符串,即i=1、k=1时取出了1001并赋值S(1)=1001;i=2、k=6时取出了0101并赋值S(2)=0101;i=3、k=11时取出了0110并赋值S(3)=0110 。
k = k + 5
Call Transform(n, S(i)) '调用Transform子过程
Text2 = Text2 & n & vbCrLf
Next i
End Sub
Private Sub Transform(n As Integer, S As String)
Dim k As Integer, i As Integer, L As Integer
L = Len(S) '取S(i)字符串的长度,其实每次都是4。
If Val(Mid(S, 1, 1)) = 1 Then '从S(i)字符串中第1位取1个字符并转换成数值与1比较,相等则执行n = -(2 ^ (L - 1)),不等就执行n=0 。
n = -(2 ^ (L - 1))
Else
n = 0
End If
For i = 2 To L
k = Mid(S, i, 1) '从S(i)字符串中第2、3、4位分别取1个字符给下面的语句计算,循环结束后得一个n的值返回主程序。
n = n + k * 2 ^ (L - i): Debug.Print k; n
Next i
End Sub
如果你不明白,可以程序中添加Debug.Print语句(如程序倒数第三行加的Debug.Print k; n)并在VB中“视图”菜单中打开“立即窗口”,在“调试”菜单中点击“逐语句”后单击"处理"按纽,之后按F8调试看一下。
Private Sub Cmd1_Click()
Dim S(3) As String, n As Integer
Dim i As Integer, k As Integer
k = 1
For i = 1 To 3
S(i) = Mid(Text1, k, 4) '从Text1中第k位取4个字符串,即i=1、k=1时取出了1001并赋值S(1)=1001;i=2、k=6时取出了0101并赋值S(2)=0101;i=3、k=11时取出了0110并赋值S(3)=0110 。
k = k + 5
Call Transform(n, S(i)) '调用Transform子过程
Text2 = Text2 & n & vbCrLf
Next i
End Sub
Private Sub Transform(n As Integer, S As String)
Dim k As Integer, i As Integer, L As Integer
L = Len(S) '取S(i)字符串的长度,其实每次都是4。
If Val(Mid(S, 1, 1)) = 1 Then '从S(i)字符串中第1位取1个字符并转换成数值与1比较,相等则执行n = -(2 ^ (L - 1)),不等就执行n=0 。
n = -(2 ^ (L - 1))
Else
n = 0
End If
For i = 2 To L
k = Mid(S, i, 1) '从S(i)字符串中第2、3、4位分别取1个字符给下面的语句计算,循环结束后得一个n的值返回主程序。
n = n + k * 2 ^ (L - i): Debug.Print k; n
Next i
End Sub
如果你不明白,可以程序中添加Debug.Print语句(如程序倒数第三行加的Debug.Print k; n)并在VB中“视图”菜单中打开“立即窗口”,在“调试”菜单中点击“逐语句”后单击"处理"按纽,之后按F8调试看一下。
更多追问追答
追问
⊙▽⊙照你这么算算不出给的参考答案。
追答
我只是分析这个程序,如果你给的原程序没有错的话。你参考答案是什么?
--
2022-12-05 广告
2022-12-05 广告
图形化编程简单理解为用积木块形式编程,scratch和python也是其中的一种,属于入门级编程,以其简单生动的画面获得无数学生的喜爱,深圳市创客火科技有限公司是一家做教育无人机的公司,旗下有编程无人机,积木无人机及室内外编队,每款飞机含有...
点击进入详情页
本回答由--提供
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询