C++笔试题

来源:互联网 发布:15寸mac魔兽世界 编辑:程序博客网 时间:2024/06/06 07:10
  1. 网易笔试题:
    常规的表达式求值,我们都会根据计算的优先级来计算,比如乘的优先级高于加。但是小易所生活的世界的表达式规则很简单,从左往右依次计算即可,而且小易所在的世界没有除法,意味着表达式中没有除,只有(+,-和*)。现在给出一个表达式,需要你帮忙计算出小易所在的世界这个表达式的值是多少?
    如:输入”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; //48为int和char的转换关系(int = char-48)}