表达式由两个非负整数x,y和一个运算符OP构成,求表达式的值

  1. img


int main()
{
    char str[100], op = 0;
    int x = -1, y = 0, s = 0, i = 0, isnum = 0;
    gets(str);

    for (i = 0; str[i]; i++)
    {
        if (str[i] >= '0' && str[i] <= '9')
        {
            s = s * 10 + (str[i] - '0');
            isnum = 1;
        }
        else if (str[i] == '+' || str[i] == '-' || str[i] == '*' || str[i] == '/' || str[i] == '%')
        {
            op = str[i];
            isnum = 0;
        }
        if ((str[i + 1] == '\0' || str[i] == ' ') && isnum)
        {
            if (x == -1)
                x = s;
            else
                y = s;
            s = 0;
        }
    }
    switch (op)
    {
    case '+':
        s = x + y;
        break;
    case '-':
        s = x - y;
        break;
    case '*':
        s = x * y;
        break;
    case '/':
        s = x / y;
        break;
    case '%':
        s = x % y;
        break;
    default:
        break;
    }
    printf("%d%c%d=%d", x, op, y, s);

    return 0;
}