怎样用VB制作一个四则运算的程序

怎样用VB制作一个四则运算的程序,第1张

画一个Text1用于输入第一个数,画一个Text2用于输入第二个数,画一个Combo1用于选择运算法则,画一个Command1点击它开始计算!

在Form的Load中打

Combo1.AddItem "+"

Combo1.AddItem "-"

Combo1.AddItem "×"

Combo1.AddItem "÷"

Command1.Caption = "计算"

在Command1的Click中打

a = Val(Text1.Text)

b = Val(Text2.Text)

Select Case Combo1.Text

Case "+"

c = a + b

Case "-"

c = a - b

Case "×"

c = a * b

Case "÷"

c = a / b

End Select

MsgBox c

希望能帮到你~有什其他要求或问题可以追问我。

'这个程序是表达式运算程序,支持0-9数字输入,小数点,+,-,*,、四则运算及括号

'expression函数式调用程序,输入为表达式字符串,返回值为结果字符串,在你的程序中只需要在等号处理程序中调用。若满意请及时采纳,谢谢

Dim MYNAME$(100)

Dim track$(100), oper$(100)

Dim trackp, operp As Integer

'按钮计算表达式

Private Sub Command1_Click()

Text2 = expression(Text1) '调用实例

End Sub

Private Function expression(a$) As String

p = 1: c$ = ""

trackp = 0: operp = 0 '栈初始化

MYNAME$(p) = "": plag = 0

For i = 1 To Len(a$)'扫描全输入

b$ = Mid$(a$, i, 1) '取一字符

If b$ = "+" Or b$ = "-" Or b$ = "*" Or b$ = "/" Or b$ = "(" Or b$ = ")" Then '运算符

If plag = 0 Then p = p + 1: plag = 1 '第一次遇到运算符则指针后移,并记录标志

MYNAME$(p) = b$: p = p + 1 '记录运算符,指针后移

MYNAME$(p) = "" '初始化下一段记录

Else

MYNAME$(p) = MYNAME$(p) + b$: plag = 0 '是数字,则记录,并复制标志

End If

Next i

p = p + 1 '加入#作为结束标志

MYNAME$(p) = "#"

s$ = ""

PUSHTRACK "#" '栈底标志

For i = 1 To p '循环扫描

a$ = MYNAME$(i) '取一个段

If a$ = "" Then

ElseIf a$ = "#" Then

Do

c$ = POPTRACK

If c$ = "#" Then Exit Do

PUSHOPER c$ 'd出内容进后缀缓冲

Loop

Exit For

ElseIf a$ <>"+" And a$ <>"-" And a$ <>"*" And a$ <>"/" And a$ <>")" And a$ <>"(" Then '不是运算符

PUSHOPER (a$) '直接进后缀缓冲

ElseIf a$ = "(" Then'是左括号

PUSHTRACK a$'直接进栈

ElseIf a$ = ")" Then'是右扩括号

Do

c$ = POPTRACK 'd出直到遇到左括号

If c$ = "(" Then Exit Do

PUSHOPER c$ 'd出内容进后缀缓冲

Loop

Else

c$ = POPTRACK

If c$ = "#" Then '空栈,直接写入

PUSHTRACK c$

PUSHTRACK a$

Else

Do

'是运算符,栈顶退栈

If ISP(c$) >= ISP(a$) Then '栈内运算符优先于该运算符

PUSHOPER c$

c$ = POPTRACK

Else

PUSHTRACK c$

PUSHTRACK a$

Exit Do

End If

Loop

End If

End If

Next i

For i = 1 To operp

s$ = s$ + oper$(i): If i <operp Then s$ = s$ + ","

Next i

s = 0: trackp = 0

For i = 1 To operp

a$ = oper$(i)

If Left$(a$, 1) >= "0" And Left$(a$, 1) <= "z" Then

PUSHTRACK a$

Else

a2$ = POPTRACK

a1$ = POPTRACK

If a$ = "+" Then

t = Val(a1$) + Val(a2$)

ElseIf a$ = "-" Then

t = Val(a1$) - Val(a2$)

ElseIf a$ = "*" Then

t = Val(a1$) * Val(a2$)

ElseIf a$ = "/" Then

t = Val(a1$) / Val(a2$)

End If

ss$ = LTrim$(Str$(t)): PUSHTRACK ss$

End If

Next i

expression = t

End Function

Private Sub PUSHTRACK(a$)

track$(trackp) = a$

trackp = trackp + 1

End Sub

Public Function POPTRACK$()

trackp = trackp - 1

POPTRACK = track$(trackp)

End Function

Private Sub PUSHOPER(a$)

operp = operp + 1

oper$(operp) = a$

End Sub

Public Function ISP(a$)

Select Case a$

Case "#"

ISP = 0

Case "("

ISP = 1

Case "*", "/"

ISP = 3

Case "+", "-"

ISP = 2

Case ")"

ISP = 4

Case Else

ISP = 0

End Select

End Function

画一个Text1用于输入第一个数,画一个Text2用于输入第二个数,画一个Combo1用于选择运算法则,画一个Command1点击它开始计算!在Form的Load中打Combo1.AddItem\"+\"Combo1.AddItem\"-\"Combo1.AddItem\"×\"Combo1.AddItem\"÷\"Command1.Caption=\"计算\"在Command1的Click中打a=Val(Text1.Text)b=Val(Text2.Text)SelectCaseCombo1.TextCase\"+\"c=a+bCase\"-\"c=a-bCase\"×\"c=a*bCase\"÷\"c=a/bEndSelectMsgBoxc希望能帮到你~有什其他要求或问题可以追问我。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/11069095.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-13
下一篇 2023-05-13

发表评论

登录后才能评论

评论列表(0条)

保存