C语言后缀表达式计算的问题
写了一个后缀表达式的计算,exp为传过来的后缀表达定义了栈来存数,但最后的运行的结果不对,有看不出那里逻辑错哦
哪位高手可以帮我看看
double CalResult(char exp[]) /*后缀表达式的的计算*/
{
char c;
numstack numst;
double d1,d2,dr;
int k=0;
int i=0;
char a[50];
char * s;
init2 (&numst); /*栈的实现*/
c=exp[k++];
while (c!='\0')
{
if (c=='+'||c=='-'||c=='*'||c=='/'||c=='%')
{
d2=pop2(&numst);
d1=pop2(&numst);
switch(c)
{
case '+': dr=d1+d2;
case '-': dr=d1-d2;
case '*': dr=d1*d2;
case '/': dr=d1/d2;
case '%': dr=(double)((int)d1%(int)d2);
}
push2(&numst,dr);
}
if (c>='0'&&c<='9'||c=='.')
{
while (c!='|')
{
a[i++]=c;
c=exp[k++];
}
s=a;
d1=(double)atof(s);
push2(&numst,d1);
}
c=exp[k++];
}
dr=numst.num[numst.top];
return dr;
}