题目

输入一个表达式(运算符号只有加、减、乘、除和小括号,表达式是正确的,不需要检查),求表达式中最后一次计算的运算符号位置。比如表达式a*(b+c)-4+d最后一次运算的运算符号是在第10个位置的“+”,输出10。算法的思想是从表达式右边开始往左边查找,对碰到的字符分四种情况考虑: 1)若是运算符“+”,保存该位置并结束查找。 2)若是第一次碰到或“/”,保存该位置,若不是第一次碰到或“/”,继续往左边查找。 3)若是“)”,调用函数找到和它对应的位置,跳过该括号内容,继续往左查找。 4)若是非运算符,继续往左查找。 运行界面如下图: (1) 表达式c*a+(a+b),最后一次计算的运算符号位置是。 (2) 实现上述功能的VB程序如下,根据算法将下列程序补充完整。 Function find(y As String, x As Integer) As Integer ‘该函数的功能是返回表达式y中和位于第x位置的“)”配对的位置,代码略   Do While Mid(y, x, 1) <> “(”     Loop   find = x   End Function   Private Sub Command1_Click()   Dim s As String, t As Integer, ans 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     ‘处理+、-     ans = t     Exit Do    End If    IfThen     ‘处理*、/     ans=t     p=1     ‘用来标记乘号或除号已经出现了    End If   If Mid(s, t, 1) =“)”Then      ‘处理括号    t = find(s, t)   End If  Loop  Label2.Caption=“最后计算的运算符号位置为”+Str(ans)  End Sub 答案: 【1】4 【1】x=x-1【2】(p=0) And (Mid(s, t, 1) = “*” Or Mid(s, t, 1) = “/”)【3】t = t-1
信息技术 试题推荐
最近更新