新手编了个计算器,请教下哪里出错了..
错误看不懂#include<stdio.h>int calc(char *p);//calc 为计算表达式的值的函数,例如计算 1+2*3 返回 7, (1+2*3) 也是返回 7
int first(char *p);//first 为获取一个表达式里的第一个值的函数,例如 1+2*3 返回 1, (1+2*3) 返回 7
char Precede(char c,char d);//判断符号优先性
int main()
{
char *p;
int sum;
gets(p);
sum=calc(p);//输入字符串
printf("%d",&sum);
return (0);
}
int calc(char *p)
{
int a,b;
int i=0;
char op1,op2;
a=first(p+i);//通过 first 获取第一个值
i++;
op1=first(p+i);//第一个运算符
do//循环计算
{
b=first(p+i);//第二个值
i++;
op2=first(p+i);//第二个运算符
if(Precede(op1,op2))//if op1 的优先级 < op2 的优先级:
b=calc(p+(i-1));//b = 调用 calc 从 b 开始计算表达式的值,而且运算符的优先级必须 > op1
else
i++;
a=a'op1'b;
op1=op2;
}while(*p(i-1)!="=");
return a;
}
char first(char *(p+i))
{
int i;
return *p+i;
}
char Precede(char c,char d)
{
int f;
switch(c)
{
case'+':
case'-':if(d=='*'||d=='/')
f=1;break;
case'*':
case'/':f=0;break;
}
if(d=='=')
f=0;
return f;
}