题目:字符串四则运算的实现

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

举例:字符串"8+7*2-9/3",计算出其值为19。

考点:数字的字符形式变换为数字形式的方法。

分析:输入的值是字符形式的,输出的值是整型的,解决这个问题的关键就是将数字和运算符号的字符型转化成整型运算。在网上的大多解决方式都用到了栈且代码量较长,本次采用的方法思路比较直接,代码量也相对减少了很多。

 #include <iostream>
#include <string>
using namespace std;
int main()
{
int i = ;
string str;
cin >> str;
int n = str.length();
char *num = new char[n];
strcpy(num, str.c_str());
//char num[10] = "8+7*2-9/3";
int num2[] = {};
for (i=;i<n;i++)
{
if (num[i] >= ''&&num[i] <= '')
{
num2[i] = num[i]-;//char转换成int
}
}
for (i = ; i < n; i++)
{
if (num[i] == '*')
{
num2[i - ] = num2[i - ] *num2[i + ];
for (int j = i; j <(n-); j++)
{
num[j] = num[j + ];//长度-2
num2[j] = num2[j + ];
}
}
if (num[i] == '/')
{
num2[i - ] = num2[i - ] /num2[i + ];
for (int j = i; j <(n-); j++)
{
num[j] = num[j + ];//长度-2
num2[j] = num2[j + ];
}
}
}
for (i = ; i < n; i++)
{
if (num[i] == '+')
{
num2[i - ] = num2[i - ]+num2[i + ];
for (int j = i; j <(n-); j++)
{
num[j] = num[j + ];//长度-2
num2[j] = num2[j + ];
}
}
if (num[i] == '-')
{
num2[i - ] = num2[i - ] -num2[i + ];
for (int j = i; j <(n-); j++)
{
num[j] = num[j + ];//长度-2
num2[j] = num2[j + ];
}
}
}
cout << num2[] << endl;
return ;
}

输入“8+7*2-9/3”,num 和 num2 变量如图所示:

变量名|  i 0 1 2 3 4 5 6 7 8
num 8 + 7 * 2 - 9 / 3
num2 8 0 7 0 2 0 9 0 3

先算乘除,后算加减,计算“ * ”运算后变量变成:

变量名| i 0 1 2 3 4 5 6 7 8
num 8 + 7 - 9 / 3 / 3
num2 8 0 14 0 9 0 3 0 3

计算“ / ”后:

变量名| i 0 1 2 3 4 5 6 7 8
num 8 + 7 - 9 / 3 / 3
num2 8 0 14 0 3 0 3 0 3

最后计算加减“ + - ”,num2[0] 就成了8+14-3=19.

运行如图所示:

最新文章

  1. SpringMVC上传文件的三种方式(转)
  2. 连接Linux下 XAMPP集成环境中部署的禅道的数据库MariaDB
  3. Python中类的特殊方法详解
  4. C++ new(1)
  5. 【sublime】在终端下手动安装sublime text 2
  6. ObjectStore onFetch方法获取记录总数
  7. ASP.NET 4的Demo实践:URL路由改进支持
  8. web服务器分析与设计(二)
  9. [置顶] 编辑框Editext光标最后显示
  10. 页面缓存OutputCache
  11. CodeForces--TechnoCup--2016.10.15--ProblemA--Transformation: from A to B
  12. Java 并发专题 : Executor具体介绍 打造基于Executor的Webserver
  13. MVC autofac 属性注入
  14. [Swift]LeetCode145. 二叉树的后序遍历 | Binary Tree Postorder Traversal
  15. Spark环境搭建(二)-----------HDFS shell 常用操作
  16. 29. SpringBoot Redis 非注解
  17. 【读书笔记】iOS-Game Kit
  18. Codeforces Round #499 (Div. 2) D. Rocket题解
  19. 在web项目中集成pdf.js的默认查看器
  20. Python - matplotlib 数据可视化

热门文章

  1. hadoop集群为分布式搭建
  2. FZU Monthly-201901 tutorial
  3. PyQt5--QPixmap
  4. 基于汇编的 C/C++ 协程 - 背景知识
  5. composer(管理依赖关系的工具) 及配置信息
  6. PHP 使用 jwt 方式用户身份认证
  7. weblogic92一次成功修改密码的记录
  8. jenkins slave 安装服务与卸载
  9. JavaScript中的箭头函数
  10. maven使用出现的错误