;只支持从左到右四则运算(不支持先乘除再加减),不支持括号
;乘号="*",除号="/"
InputBox, c
while(j="")
{
    a := []
    加 := InStr(c, "+"), 减 := InStr(c, "-"), 乘 := InStr(c, "*"), 除 := InStr(c, "/")
    if(加=0 and 减=0 and 乘=0 and 除=0)
        break
    if 加=0
        加:=100
    if 减=0
        减:=100
    if 乘=0
        乘:=100
    if 除=0
        除:=100
    switch
    {
    case 乘<减 and 乘<加 and 乘<除: a := StrSplit(c,"*",,2)
        Gosub 取第二个值
        if(A_Index=1)
            结果 := a[1]*d[1]
        else
            结果 := 结果*d[1]
    case 除<减 and 除<乘 and 除<加: a := StrSplit(c,"/",,2)
        Gosub 取第二个值
        if(A_Index=1)
            结果 := a[1]/d[1]
        else
            结果 := 结果/d[1]
    case 加<减 and 加<乘 and 加<除: a := StrSplit(c,"+",,2)
        Gosub 取第二个值
        if(A_Index=1)
            结果 := a[1]+d[1]
        else
            结果 := 结果+d[1]
    case 减<加 and 减<乘 and 减<除: a := StrSplit(c,"-",,2)
        Gosub 取第二个值
        if(A_Index=1)
            结果 := a[1]-d[1]
        else
            结果 := 结果-d[1]
    }
}
if(结果="")
    MsgBox 错误
else
    MsgBox % Format("{:g}", 结果)
ExitApp

取第二个值:
c := a[2], d := [], j := ""
加 := InStr(c, "+"), 减 := InStr(c, "-"), 乘 := InStr(c, "*"), 除 := InStr(c, "/")
if(加=0 and 减=0 and 乘=0 and 除=0)
{
    d[1] := c, j := 1
    return
}
if 加=0
    加:=100
if 减=0
    减:=100
if 乘=0
    乘:=100
if 除=0
    除:=100
switch
{
case 乘<减 and 乘<加 and 乘<除: d := StrSplit(c,"*",,2)
case 除<减 and 除<加 and 除<乘: d := StrSplit(c,"/",,2)
case 加<减 and 加<乘 and 加<除: d := StrSplit(c,"+",,2)
case 减<加 and 减<乘 and 减<除: d := StrSplit(c,"-",,2)
}
return

 

声明:站内资源为整理优化好的代码上传分享与学习研究,如果是开源代码基本都会标明出处,方便大家扩展学习路径。请不要恶意搬运,破坏站长辛苦整理维护的劳动成果。本站为爱好者分享站点,所有内容不作为商业行为。如若本站上传内容侵犯了原著者的合法权益,请联系我们进行删除下架。