比如eval("1+4*3/2-5")=2
View Code
1 #include <iostream> 2 using namespace std; 3 4 int calculate(char *expStr) 5 { 6 int stack[100]; 7 int top=-1; 8 stack[++top]=expStr[0]-'0'; 9 for(int i=1;i<strlen(expStr);i+=2) 10 if(expStr[i]=='*') 11 stack[top]=stack[top]*(expStr[i+1]-'0'); 12 else if(expStr[i]=='/') 13 stack[top]=stack[top]/(expStr[i+1]-'0'); 14 else 15 { 16 if(expStr[i]=='+') 17 stack[++top]=-1; 18 else 19 stack[++top]=-2; 20 stack[++top]=expStr[i+1]-'0'; 21 } 22 int result=stack[0]; 23 for(int i=1;i<top;i+=2) 24 if(stack[i]==-1) 25 result+=stack[i+1]; 26 else if(stack[i]==-2) 27 result-=stack[i+1]; 28 return result; 29 } 30 31 int main() 32 { 33 char *expStr = "8*2-9/2+4*5/2-9/3"; 34 cout<<calculate(expStr)<<endl; 35 36 system("pause"); 37 return 0; 38 }
这个问题是整数四则运算的简化版,而且简化的很多,1)只是个位数的运算,2)不允许有括号。如果那位能够解决不受这两条限制的整数四则运算问题,请不吝赐教。。