分享

简单字符四则运算

 champion_xu 2012-09-12
  1. #include <assert.h>  
  2. #include <stdio.h>  
  3.   
  4. int cal(int c1, char op, int c2)  
  5. {  
  6.     if (op=='+'return c1+c2;  
  7.     if (op=='-'return c1-c2;  
  8.     if (op=='*'return c1*c2;  
  9.     if (op=='/'return c1/c2;  
  10.     return 0;  
  11. }  
  12.   
  13. int calculate(int len, char *expStr)  
  14. {  
  15.     assert(expStr);  
  16.     if (len < 3) return -1;  
  17.     char *p = expStr;  
  18.     int c1 = p[0]-'0';  
  19.     char op = p[1];  
  20.     int c2 = p[2]-'0';  
  21.     p += 3;  
  22.     while(*p) {  
  23.         if (*p=='*' || *p=='/') {  
  24.             c2 = cal(c2, *p, p[1]-'0');  
  25.         } else {  
  26.             c1 = cal(c1, op, c2);  
  27.             op = *p;  
  28.             c2 = p[1]-'0';  
  29.         }  
  30.         p += 2;  
  31.     }  
  32.     return cal(c1, op, c2);  
  33. }  
  34.   
  35. int main(void)  {  
  36.     int ret1 = calculate(3, "1+2");  
  37.     int ret2 = calculate(11, "1+2*3/5-6*7");  
  38.     int ret3 = calculate(11, "1+2-3/5-6*7");  
  39.     printf ("values: %d, %d, %d", ret1, ret2, ret3);  
  40.   
  41.     return 0;  
  42. }  
  43.   
  44. // output:  
  45. // values: 3, -40, -39 

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多