#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;
}
后序式的计算程序?
最新推荐文章于 2022-05-23 17:07:46 发布