【备战2014笔面试】华为机考-字符串四则运算的实现

/*

题目:有字符串表示的一个四则运算表达式,要求计算出该表达式的正确数值。 
说明:1. 四则运算即加减乘除 + - / *
      2. 该表达式中的数字只能是1位(数值范围0~9)
      3.另若有不能整除的情况,按向下取整处理,eg: 8/3得出值为2。
例如:若有字符串"8+7*2-9/3",计算出其值为19。

*/


int calculate(int len, char *expstr)
{
    
    //这里用两个数组,分别存储数字和操作符 
    
    int num[100];
    int numlenth = 0;
    
    char op[100];
    int oplenth = 0;
    
    //初始化第一个数字 
    num[0] = expstr[0] - '0';
    numlenth++;
    
    //利用循环先计算乘除法,把加减操作符和其他操作数入存入数组 
    
    for(int i = 1; i<= len-2 ; i=i+2)
    {
            if(expstr[i]=='+'||expstr[i]=='-')
            {
                  
                  num[numlenth] =  expstr[i+1] - '0';                               
                  numlenth++;
                                    
                  op[oplenth] = expstr[i];
                  oplenth++;
                  
            }else 
            if(expstr[i]=='*')
            {
                   num[numlenth-1] =  num[numlenth-1] * (expstr[i+1] - '0');
                   
            }else
            if(expstr[i]=='/')
            {
                   num[numlenth-1] =  num[numlenth-1] / (expstr[i+1] - '0');            
            }
                 
     }
          
          
     int sum = num[0];          
     for(int i = 0; i< oplenth; i++)
     {
             if(op[i]=='+')
             {
                  sum = sum + num[i+1];
             }
             if(op[i]=='-')
             {
                  sum = sum - num[i+1];
             }     
          
     }          
     return sum;    
    
}

你可能感兴趣的:(C++)