热心网友
回答时间:2024-04-27 18:39
分别代表输入的第一个数和第二个数
Dim strn1$, strn2$
'StrN1,StrN2分别代表输入第一个
Dim firstN As Boolean
'判断是否是数字开头
Dim pointflag As Boolean
'判断是否已有小数点
Dim runsign As Integer
'变量Runsign用来储存运算符号
Dim signflag As Boolean
'变量SignFlag判断是否已有运算符号
Private Sub form_load()
n1 = 0: n2 = 0
strn1 = "": strn2 = ""
firstN = True
pointflag = False
'将 PointFlag 设为否,即没有小数点
runsign = 0
signflag = False
'没有运算符号输入
End Sub
Private Sub cmdN_Click(Index As Integer)
Select Case Index
'用Index 作为判断分支的条件
Case 0 To 9
'如果Index是0到9,即数字
If firstNum Then
'输入为第一个数字的话
strn1 = Str(Index)
'实型转字符型
firstN = False
'初赋值标志为假
Else
strn1 = strn1 + Str(Index)
'输入不是第一个数字的话,将输入的字符添加到原有字符串上
End If '结束 if 块
Text1.Text = strn1 '将字符串结果显示到标签上
Case 10 '如果输入为小数点
If Not pointflag Then '如果没有小数点
If firstN Then '如果是第一个字符
strn1 = "0." '显示为" 0." 不变
firstN = False
Else
strn1 = strn1 + "."
'初赋值标志为假,否则字符串上加上小数点符号
End If '结束if块
Else
Exit Sub
'已有小数点,则退出单击事件,也就是对单击事件不反应
End If
pointflag = True
Text1.Text = strn1
'将小数点标志为真,即在输入串中有了小数点,在显示屏上显示数字串
Case 17
If Sgn(Val(strn1)) = 1 Then
strn1 = "-" + strn1
Else
If Sgn(Val(strn1)) = -1 Then
strn1 = Right(strn1, Len(strn1) - 1)
End If
strn1 = "0."
End If
Text1.Text = strn1
Case 12 To 15
firstN = True
'当输入为运算符号时,使下一次可以输入新数据
pointflag = False '还原小数点标记值
If signflag Then '前面已有运算符未运算
Call Run '调用计算子程序,该子程序在下面有说明
Else
signflag = True
'前面没有未运算的,将有无运算符标志设为"有"
strn2 = strn1 '把字符串1复制给字符串2
strn1 = "" '字符串1清空
End If
runsign = Index - 11
Case 11 '如果输入等号
If Not signflag Then '如果没有输入运算符
Text1.Text = strn1 '以下均为重置各个变量
ysjg = Val(strn1)
firstN = True
pointflag = False
Else
Call Run
signflag = False
'如果已输入运算符在内,计算清除是否有运算符标志
End If
Case 16
n1 = 0
n2 = 0
'如果输入清除按钮,以下均为重置各个变量,相当于Form_Load中的代码
strn1 = ""
strn2 = ""
firstN = True
pointflag = False
runsign = 0
signflag = False
Text1.Text = "0."
End Select
End Sub
Public Sub Run()
Dim ysjg As Single 'Ysjg为局部变量,用来存储运算结果
n1 = Val(strn2) '将字符串转换成数值
n2 = Val(strn1)
Select Case runsign
Case 1
ysjg = n1 + n2
Case 2
ysjg = n1 - n2
Case 3
ysjg = n1 * n2
Case 4
ysjg = n1 / n2
End Select
strn2 = Str(ysjg)
strn1 = strn2
Text1.Text = strn2
End Sub
收起