编程设计一个四则运算计算机,键盘输入2个实数和运算符号,输出运算公式和结果。

编程设计一个四则运算计算机,键盘输入2个实数和运算符号,输出运算公式和结果。

#include <stdio.h>
#include <string.h>
int Compare(char str) {
    if (str == '#') {
        return 0;
    } else if (str == '+' || str == '-') {
        return 1;
    } else if (str == '*' || str == '/') {
        return 2;
    } else {
        //输入符号有误时返回-1
        return -1;
    }
}
int Calcution(int a, char str, int b) {
    int x = 0;
    if (str == '+') {
        x = a + b;
    } else if (str == '-') {
        x = a - b;
    } else if (str == '*') {
        x = a * b;
    } else if (str == '/') {
        x = a / b;
    }
    return x;
}
int main(int argc, const char * argv[]) {
    int numberStack [100] = {0};
    int numberTop = -1;
    char symbolStack [100] = {'#'};
    int symbolTop = 0;
    char str[100];
    int flag = -1;
    scanf("%s", str);
    int x = 0;
    int length = (int)strlen(str);
    str[length] = '#';
    length = length + 1;
    for (int i = 0; i < length;) {
        if (str[i] >= '0' && str[i] <= '9') {
            x *= 10;
            x += str[i++] - '0';
            flag=1;
        } else {
            if(flag==1) {
                numberStack[++numberTop] = x;
             x = 0;
             flag=-1;
            }
            if (Compare(symbolStack[symbolTop]) < Compare(str[i])) {
                symbolStack[++symbolTop] = str[i++];
            } else {
                int b = numberStack[numberTop--];
                int a = numberStack[numberTop];
                numberStack[numberTop] = Calcution(a, symbolStack[symbolTop], b);
                symbolTop--;
                if (str[i] == '#' && symbolTop == 0) {
                    break;
                }
            }
        }
    }
    printf("%d\n", numberStack[numberTop]);
}

参考: