怎么样改能使这个程序有计算负数和小数(浮点数)的功能呢???
#include "stdio.h"
char get;
main()
{int result;
int f1(void),f2(void),f3(void);
printf("input suanshi:");
get=getchar(); /*从表达式开始输出字符*/
result=f1();
if(get=='\n')
printf("result:%d\n",result);
}
match(char k) /*函数检验当前字符是否与所需要的字符匹配*/
{if(get==k)get=getchar(); /*若匹配则输入下一个字符*/
}
int f3(void) /*用来计算括号及数字结合,优先级最高*/
{int s;
int f1(void);
if(get=='(')
{match('(');
s=f1();
match(')');
}
else if(get>='0'&&get<='9') /*如果是数字不是括号,则退回字符给键盘输入流*/
{ungetc(get,stdin);
scanf("%d",&s); /*读出数字*/
get=getchar();
}
return(s);
}
int f2(void) /*用来计算乘除法,优先级低于括号*/
{int u;
u=f3();
while((get=='*')||(get=='/'))
switch(get)
{case '*':match('*');
u=u*f2();
break;
case '/':match('/');
u=u/f3();
break;
}
return(u);
}
int f1(void) /*用来计算加减法,优先级最低*/
{int t=f2();
while((get=='+')||(get=='-'))
switch(get)
{case '+':match('+');
t=t+f2();
break;
case '-':match('-');
t=t-f2();
break;
}
return(t);
}