int jisuan(int a,int b,char fu)
{
if(fu=='+') return a+b;
if(fu=='-') return a-b;
if(fu=='*') return a*b;
if(fu=='/') return a/b;
}
int fun(char *ss,int n)
{
int i,flag=0;
if(n==1) return ss[0]-'0';
for(i=0;i
if((ss[i]=='+')||(ss[i]=='-'))//扫描加减号
{
flag = 1;
return jisuan(fun(ss,i),fun(ss+i+1,n-i-1),ss[i]);
}
}
if(flag==0)//如果算数中没有+-
{
for(i=0;i
{
return jisuan(fun(ss,i),fun(ss+i+1,n-i-1),ss[i]);
}
}
}
void main(void)
{
char s[50];
int n;
printf("输入算数:");
scanf("%s",s);
n = strlen(s);
printf("=%d\r\n",fun(s,n));
}
用的递归,这样省去很多麻烦