【加试题】输入一个表达式(运算符号只有加减乘除和小括号,表达式是正确的,不需要检查),求表达式中最后一次运算的运算符号位置。比如表达式a*(b+c)-4+d最后一次运算的运算符号是在第10个位置的“+”,输出10。算法的思想是:从表达式右边开始往左边查找,对碰到的字符分四种情况考虑:
1)若是运算符“+”或“-”保存该位置并结束查找。
2)若是第一次碰到“*”或“/”,保存该位置,若不是第一次碰到“*”或“/”,继续往左边查找。
3)若是“)”,调用函数找到和它对应的“(”位置,跳过该括号,继续往左查找。
4)若是非运算符,继续往左查找。
运行界面如下图:
![](http://tikupic.21cnjy.com/16/51/1651255a230443c85cd0f41c68cb929c.jpg)
实现上述功能的 VB 程序如下,但加框处代码有错,请改正。
Function find(y As String , x As Integer ) As Integer
’该函数的功能是:返回表达式 y 中和位于第 x 位置的“)”配对的“(”的位置,代码略
End Function
Private Sub Commandl _ Click ()
Dim s As String , t As Integer , temp As Integer , p As Integer
s = Text1. Text ‘输入表达式
t = Len (s):p = 0
Do While t>0
If Mid ( s, t , 1) =“*” Or Mid ( s, t , 1) =“-” Then ‘处理+、-
temp=t
Exit Do
End If
If
① Then 处理 *、/
temp = t
P=1 ‘用来标记乘号或除号已经出现了
End If
If Mid(s, t, 1)= ")" Then ‘处理括号
②
End If
t=t -1
Loop
Text 2.Text = Str (temp)
End Sub
①{#blank#}1{#/blank#} ②{#blank#}2{#/blank#}