设为首页 加入收藏

TOP

字符串四则运算的实现
2013-09-26 19:50:41 来源: 作者: 【 】 浏览:86
Tags:字符串 四则 运算 实现

  题目:有字符串表示的一个四则运算表达式,要求计算出该表达式的正确数值。

  说明:1. 四则运算即加减乘除"+-*/"

  2. 该表达式中的数字只能是1位(数值范围0~9)

  3.另若有不能整除的情况,按向下取整处理,eg: 8/3得出值为2.

  例如:若有字符串"8+7*2-9/3",计算出其值为19.

  代码如下:

  #include "stdafx.h"

  #include <stdio.h>

  #include <string.h>

  #include <assert.h>

  int cal(int nNum1, char op, int nNum2)

  {

  if(op == '+')

  {

  return nNum1 + nNum2;

  }

  if(op == '-')

  {

  return nNum1 - nNum2;

  }

  if(op == '*')

  {

  return nNum1 * nNum2;

  }

  if(op == '/')

  {

  return nNum1 / nNum2;

  }

  }

  int calculate(int len, char *expstr)

  {

  assert(expstr);

  if(len < 3)

  {

  return -1;

  }

  char *p = expstr;

  int nNum1 = p[0] - '0';

  char op = p ;

  int nNum2 = p - '0';

  p += 3;

  while(*p)

  {

  if(*p=='*' || *p=='/')

  {

  nNum2 = cal(nNum2, *p, p -'0');

  }

  else

  {

  nNum1 = cal(nNum1, op, nNum2);

  op = *p;

  nNum2 = p - '0';

  }

  p += 2;

  }

  return cal(nNum1, op, nNum2);

  }

  int main()

  {

  //char str[] = "1+2*3/5-6*7";

  char str[] = "8+7*2-9/3";

  int res = calculate(strlen(str), str);

  printf("result: %d\n", res);

  }

 

】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇C++中全局对象的初始化顺序 下一篇C++中内存访问越界问题

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容: