hyf6688 2022-12-08 11:36 采纳率: 0%
浏览 82

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

  1. img

  • 写回答

1条回答 默认 最新

  • 浪客 2022-12-08 16:19
    关注
    
    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;
    }
    
    评论 编辑记录

报告相同问题?

问题事件

  • 创建了问题 12月8日