c语言的算术表达式
比如当你输入 23.55+20.25# 时 #是结束标志 当我定义一个float的栈是 将我转过来的值23.550000传入栈中时 值就变成了23.549999 不知道有谁知道啊!
核心代码是ElemType ch,x;
float y1=0.0f,y2=0.0f,s,r=0.0f,j=1.0f,k=0.0f;
push(Z,'#');
printf("输入算式(以#号结束):");
ch=getchar();
gettop(Z,x);
while(ch != '#' || x != '#')
{
if(panduan(ch))
switch(youxianji(x,ch))
{
case '<':push(Z,ch);
ch=getchar();
break;
case '=':pop(Z,x);
ch=getchar();
break;
case '>':pop(Z,x);
pop1(S,y2);
pop1(S,y1);
push1(S,operate(y1,y2,x));
}
else if(ch >='0' && ch <= '9' || ch == '.')
{
s=0.0f;
while(ch >= '0' && ch <= '9')
{
s=s*10+ch-48.0f;
ch=getchar();
}
if(ch == '.')
{
ch=getchar();
r=ch-48.0f;
r=r/10.0f;
j=1.0f/10;
printf("r=%f \n j=%f \n",r,j);
ch=getchar();
while(ch >= '0' && ch <= '9' )
{
j=j/10.0f;
r=r+(ch-48)*j;
printf("r=%f \n j=%f \n",r,j);
ch=getchar();
}
}
k=s+r;
printf("数为:%f \n",k);
push1(S,k);
pop1(S,k);
printf("数为1:%f \n",k);
}
else
{
printf("您输入了非法字符!!!");
exit(1);
}
gettop(Z,x);