后序式运算代码实例
程序员文章站
2022-07-05 23:14:37
c代码(理论可参考中序式转后序)
#define _crt_secure_no_warnings
#include
#include
void jisuan(char *);
flo...
c代码(理论可参考中序式转后序)
#define _crt_secure_no_warnings #include #include void jisuan(char *); float cal(float, float, char); void main() { char input[80]; printf("中序式:"); scanf("%s", input); jisuan(input); system("pause"); } void jisuan(char *arr) { float stack[80] = { 0.0 }; int top = 0; int i = 0; char op; char temp[2]; while (1) { op = arr[i]; switch (op) { case '\0': printf("%f\n", stack[top]); return; case '+': case '-': case '*': case '/': stack[top - 1] = cal(stack[top],stack[top - 1],op); top--; break; default: if (top < sizeof(stack) / sizeof(float)) { temp[0] = op; top++; stack[top] = atof(temp); //字符转float } break; } i++; } } float cal(float a, float b, char op) { if (op == '+') { return a + b; } if (op == '-') { return a - b; } if (op == '*') { return a*b; } if (op == '/') { return a / b; } }