编程设计一个四则运算计算机,键盘输入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]);
}