表达式求值,一个字符串只由’+’,’-‘,和‘0’-‘9’组成,并且’+’,’-‘只作为二元运算符。
# include "stdafx.h"
bool calculate( const char* exp, int &result ){
result = 0;
if( exp == NULL ) return true;
int sign = 1;
while( *exp != '\0' )
{
int curResult = 0;
int c = (int)(unsigned char)*exp++;
while( isdigit(c) ){
curResult = curResult*10 + c - '0';
c = (int)(unsigned char)*exp;
if( *exp != '\0' ) exp++;
}
result += curResult*sign;
if( c == '+' )
sign = 1;
else if( c == '-' )
sign = -1;
}
return true;
}
int main(){
char ch[20];
cin >> ch;
int result = 0;
calculate( ch, result );
cout << result << endl;
}
/*
23239+29-18-1222
23128
请按任意键继续. . .
*/