#include<stdio.h>
#include<stdlib.h>
#define MaxSize 100
float compvalue(char exp[])
{
struct{
float data[MaxSize];
int top;
} st;
st.top = -1;
float d;
char ch;
int t = 0;
ch = exp[t++];
while(ch != '#')
{
switch(ch)
{
case '+':
st.data[st.top-1] = st.data[st.top-1] + st.data[st.top];
st.top--;
t++;
break;
case '-':
st.data[st.top-1] = st.data[st.top-1] - st.data[st.top];
st.top--;
t++;
break;
case '*':
st.data[st.top-1] = st.data[st.top-1] * st.data[st.top];
t++;
st.top--;
break;
case '/':
if (st.data[st.top] == 0)
{
printf("除数不能为0");
exit(0);
}
st.data[st.top-1] = st.data[st.top-1] / st.data[st.top];
st.top--;
t++;
break;
default :
d = 0;
while(ch>='0'&&ch<='9')
{
d = d*10 + ch-'0';
ch = exp[t];t++;
}
st.top++;
st.data[st.top] = d;
}
ch = exp[t];t++;
}
return st.data[st.top];
}
int main(void)
{
float result;
char exp[] = {'3',' ','5',' ','*',' ','6',' ','+',' ','#'};
result = compvalue(exp);
printf("%f",result);
return 0;
}
后缀表达式计算
最新推荐文章于 2022-11-09 21:13:33 发布