后序式的计算程序?

来源:互联网 发布:数控车床有编程软件吗 编辑:程序博客网 时间:2024/06/02 13:46
#include<stdio.h>#include<stdlib.h>void eval(char *);//double cal(double,char,double);//int main(void){char input[100];printf("输入后序运算式:");scanf("%s",input);eval(input);return 0;}//计算后序式int eval(char *fix){double stack[100]={0.0};//存放结果的栈char temp[2];//存放栈顶两个连数char token;//存放运算符int top=0,i=0;temp[1]='/0';while(1){token=fix[i];switch(token){case '/0':while(top>0){printf("答案=%c",stack[top]);return;}return;case '+':case '-':case '*':case '/':stack[top-1]=cal(stack[top],token,stack[top-1]);top--;break;default:if(top<sizeof(stack)/sizeof(float)){temp[0]=fix[i];top++;stack[top]=stof(temp);}break;}i++;}}//运算两个数double cal(double p1,char op ,double p2){switch(op){case '+':return p1+p2;case '-':return p1-p2;case '*':return p1*p2;case '/':return p1/p2;}return p;}

0 0