小弟刚接触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
请问,计算机器上的那数字键呢? --------------------编程问答-------------------- 你贴代码的时候用那个贴代码的控件,看起来方便 --------------------编程问答--------------------
你的代码好像不全,我也不知道数字键在哪。 --------------------编程问答-------------------- 难度太高,解释不了。。 --------------------编程问答-------------------- 单步调试和设断点调试是程序员必须掌握的技能之一。
补充:VB , 基础类