面试题45:字符串四则运算的实现
2013-09-06 21:52
267 查看
题目:有字符串表示的一个四则运算表达式,要求计算出该表达式的正确数值。
说明:1. 四则运算即加减乘除"+-*/"
2. 该表达式中的数字只能是1位(数值范围0~9)
3.另若有不能整除的情况,按向下取整处理,eg: 8/3得出值为2。
例如:若有字符串"8+7*2-9/3",计算出其值为19。
代码如下:
说明: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[1]; int nNum2 = p[2] - '0'; p += 3; while(*p) { if(*p=='*' || *p=='/') { nNum2 = cal(nNum2, *p, p[1]-'0'); } else { nNum1 = cal(nNum1, op, nNum2); op = *p; nNum2 = p[1] - '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); }
相关文章推荐
- 面试题45:字符串四则运算的实现
- 面试题 简单的字符串表达式四则运算(不考虑括号)
- 字符串四则运算表达式的求解(中缀表达式实现,模拟笔算的方法)
- 大数字符串的四则运算之加法----Java代码实现
- java实现字符串四则运算公式解析工具类
- java实现字符串四则运算公式解析工具类的方法
- PHP 实现后缀表达式(接受四则运算字符串,输出计算结果,附代码)
- JAVA实现字符串四则运算
- 大数项目:用字符串表示超过内存表示范围的大数据并实现四则运算
- 使用Boost.Spirit实现四则运算字符串的解析
- Java实现字符串四则运算(带小数点)
- 利用位运算实现四则运算 -- 华为面试题
- 栈实现四则运算
- 面试题: 十进制INT数字转化为16进制字符串、实现字符串和数字的相互转化
- 【栈】一个简答的四则运算计算器的实现
- NYOJ 35题 表达式求值,四则运算(栈实现) 严蔚敏
- 栈的应用,实现简单的不带括号的四则运算
- 异或运算实现简单的字符串加密
- 利用自定义数据集运算函数实现字符串的特殊转化
- 使用“位运算”实现“四则运算”之加减乘除