当前位置:编程学习 > VB >>

小弟刚接触vb,有道题求高手解释,小弟不尽

这是一道计算器的题目,小弟看不懂,请高手解释


Dim op As Integer,numb1 As Single,numb2 As Single,numb As Single
Dim c As Byte, j As Byte, s As Byte
Private Sub jisuan()
  Select Case op
    Case 0: numb = numb1 + numb2     
    Case 1: numb = numb1 - numb2     
    Case 2: numb = numb1 * numb2     
    Case 3: If numb2<>0 Then numb=numb1/numb2 Else MsgBox "零作除数!"   
  End Select
End Sub
Private Sub Command1_Click()
  If Len(Label1)>0 Then Label1=Left(Label1,Len(Label1)-1)  
End Sub
Private Sub Command3_Click()
  Label1 = "": c = 0: s = 0                     
End Sub
Private Sub Command4_Click(Index As Integer)
  s = 0
  If numb2 = 0 And c <> 0 And j = 1 Then
    Label1 = ""
    j = 0
  End If
  Label1 = Label1 & Index
End Sub
Private Sub Command5_Click(Index As Integer)
  Select Case Index
    Case 4
      numb1 = Sqr(Val(Label1))             
      Label1 = numb1
    Case 6
      numb1 = 1 / Val(Label1)               
      Label1 = numb1
    Case 0 To 3
      If s = 0 And c = 0 Then
        numb1 = Label1: Label1 = ""
        c = 1: j = 0
      ElseIf s = 0 And c <> 0 Then
        numb2 = Label1
        Call jisuan
        Label1 = numb: numb1 = numb
        numb2 = 0: j = 1
      End If
      op = Index
      s = 1
  End Select
End Sub
Private Sub Command6_Click()
  s = 0
  Call Command5_Click(op)
End Sub
Private Sub Command8_Click()
  If InStr(Label1, ".") = 0 Then Label1 = Label1 + "."
End Sub
--------------------编程问答-------------------- 格式化一下,这样看方便

Dim op As Integer, numb1 As Single, numb2 As Single, numb As Single
Dim c As Byte, j As Byte, s As Byte

Private Sub jisuan()
    Select Case op
        Case 0: numb = numb1 + numb2
        Case 1: numb = numb1 - numb2
        Case 2: numb = numb1 * numb2
        Case 3: If numb2 <> 0 Then numb = numb1 / numb2 Else MsgBox "零作除数!"
    End Select
End Sub

Private Sub Command1_Click()
    If Len(Label1) > 0 Then Label1 = Left(Label1, Len(Label1) - 1)
End Sub

Private Sub Command3_Click()
    Label1 = "": c = 0: s = 0
End Sub

Private Sub Command4_Click(Index As Integer)
    s = 0
    
    If numb2 = 0 And c <> 0 And j = 1 Then
        Label1 = ""
        j = 0
    End If
    
    Label1 = Label1 & Index
End Sub

Private Sub Command5_Click(Index As Integer)
    Select Case Index
        Case 4
            numb1 = Sqr(Val(Label1))
            Label1 = numb1
        Case 6
            numb1 = 1 / Val(Label1)
            Label1 = numb1
        Case 0 To 3
            If s = 0 And c = 0 Then
                numb1 = Label1: Label1 = ""
                c = 1: j = 0
            ElseIf s = 0 And c <> 0 Then
                numb2 = Label1
                Call jisuan
                Label1 = numb: numb1 = numb
                numb2 = 0: j = 1
            End If
            
            op = Index
            s = 1
    End Select
End Sub

Private Sub Command6_Click()
    s = 0
    Call Command5_Click(op)
End Sub

Private Sub Command8_Click()
    If InStr(Label1, ".") = 0 Then Label1 = Label1 + "."
End Sub

  --------------------编程问答--------------------

Dim op As Integer, numb1 As Single, numb2 As Single, numb As Single
Dim c As Byte, j As Byte, s As Byte

Private Sub jisuan()    '加减乘除运算
    Select Case op
        Case 0: numb = numb1 + numb2    '加法运算
        Case 1: numb = numb1 - numb2    '减法运算
        Case 2: numb = numb1 * numb2    '乘法运算
        Case 3: If numb2 <> 0 Then numb = numb1 / numb2 Else MsgBox "零作除数!" '除法运算,除数不为0则计算
    End Select
End Sub

Private Sub Command1_Click()    '计算器上的 CE 键,Label1为计算器显示窗口
    If Len(Label1) > 0 Then Label1 = Left(Label1, Len(Label1) - 1)
End Sub

Private Sub Command3_Click()    '清除键,即计算器上的 C 键
    Label1 = "": c = 0: s = 0
End Sub

Private Sub Command4_Click(Index As Integer)    '可能是运算功能键,如开方、平方、倒数等,按后显示窗清零,等待第二个值。
    s = 0
    
    If numb2 = 0 And c <> 0 And j = 1 Then
        Label1 = ""
        j = 0
    End If
    
    Label1 = Label1 & Index
End Sub

Private Sub Command5_Click(Index As Integer)
    Select Case Index
        Case 4  '开平方运算
            numb1 = Sqr(Val(Label1))
            Label1 = numb1
        Case 6  '倒数运算
            numb1 = 1 / Val(Label1)
            Label1 = numb1
        Case 0 To 3 '加减乘除运算
            If s = 0 And c = 0 Then
                numb1 = Label1: Label1 = ""
                c = 1: j = 0
            ElseIf s = 0 And c <> 0 Then
                numb2 = Label1
                Call jisuan
                Label1 = numb: numb1 = numb '计算结果给numb1,等待下次计算
                numb2 = 0: j = 1
            End If
            
            op = Index
            s = 1
    End Select
End Sub

Private Sub Command6_Click()    '因该是 "=" 键,连续运算
    s = 0
    Call Command5_Click(op)
End Sub

Private Sub Command8_Click()
    If InStr(Label1, ".") = 0 Then Label1 = Label1 + "."    '小数点,如果没有按过则显示,如果按过则不再Label1中添加(以防两个点儿出现)
End Sub
--------------------编程问答--------------------
引用 2 楼 z_wenqian 的回复:
VB code

Dim op As Integer, numb1 As Single, numb2 As Single, numb As Single
Dim c As Byte, j As Byte, s As Byte

Private Sub jisuan()    '加减乘除运算
    Select Case op
        Case 0: numb = numb1……

请问,计算机器上的那数字键呢? --------------------编程问答-------------------- 你贴代码的时候用那个贴代码的控件,看起来方便 --------------------编程问答--------------------
引用 3 楼 wpl00 的回复:
请问,计算机器上的那数字键呢?


你的代码好像不全,我也不知道数字键在哪。 --------------------编程问答-------------------- 难度太高,解释不了。。 --------------------编程问答-------------------- 单步调试和设断点调试是程序员必须掌握的技能之一。
补充:VB ,  基础类
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,