- 网易笔试题:
常规的表达式求值,我们都会根据计算的优先级来计算,比如乘的优先级高于加。但是小易所生活的世界的表达式规则很简单,从左往右依次计算即可,而且小易所在的世界没有除法,意味着表达式中没有除,只有(+,-和*)。现在给出一个表达式,需要你帮忙计算出小易所在的世界这个表达式的值是多少?
如:输入”3+5*2”,返回:16。
int CalData(char szTestData[100])
{
int nCurBit = 0;
int nCurTotalData = 0;
int nDataLen = strlen(szTestData) - 1;
while (nDataLen--)
{
switch(szTestData[nCurBit])
{
case '+':
{
nCurTotalData = (szTestData[nCurBit-1]-48) + (szTestData[nCurBit+1]-48);
szTestData[nCurBit+1] = (char)(nCurTotalData+48);
break;
}
case '-':
{
nCurTotalData = (szTestData[nCurBit-1]-48) - (szTestData[nCurBit+1]-48);
szTestData[nCurBit+1] = (char)(nCurTotalData+48);
break;
}
case '*':
{
nCurTotalData = (szTestData[nCurBit-1]-48) * (szTestData[nCurBit+1]-48);
szTestData[nCurBit+1] = (char)(nCurTotalData+48);
break;
}
default:
{
break;
}
}
nCurBit++;
}
return szTestData[nCurBit]-48;
}