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

本文介绍了一种通过解析字符串形式的四则运算表达式来计算其结果的方法。该方法适用于仅包含一位数字的简单表达式,并能正确处理加、减、乘、除运算,其中除法结果向下取整。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

/*

题目:有字符串表示的一个四则运算表达式,要求计算出该表达式的正确数值。 
说明: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;    
    
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值