华为笔试——C++字符串四则运算的实现
题目:字符串四则运算的实现
有字符串表示的一个四则运算表达式,要求计算出该表达式的正确数值。四则运算即:加减乘除"+-*/",另外该表达式中的数字只能是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.
运行如图所示:

华为笔试——C++字符串四则运算的实现的更多相关文章
- C++版 - 剑指Offer 面试题35:第一个只出现一次的字符 解题报告(华为OJ034-找出字符串中第一个只出现一次的字符)
面试题35:第一个只出现一次的字符 题目:在一个字符串中找到第一个只出现一次的字符.如输入abaccdeff,则输出b.(2006年google的一道笔试题.) 分析: 首先应向确认一下是ASCII字 ...
- 华为笔试——C++转换字符串问题
题目:转换字符串 题目介绍: 将输入字符串中下标为偶数的字符连成一个新的字符串输出,需要注意两点: 1. 如果输入字符串的长度超过20,则转换失败,返回“ERROR!”字符串: 2. 输入字符串只能由 ...
- 华为OJ平台——字符串分隔
题目描述: 连续输入字符串,请按长度为8拆分每个字符创 后输出到新的字符串数组: 长度不是8整数倍的字符串请在后面补数字0,空字符串不处理 输入 连续输入字符串(输入两次,每个字符长长度小于100)输 ...
- 华为笔试——C++括号匹配
题目:括号匹配 题目来源:https://blog.csdn.net/lizi_stdio/article/details/76618908 题目介绍:输入一个字符串,里面可能包含“()”.“ [ ...
- 华为OJ平台——字符串通配符
题目描述: 在计算机中,通配符一种特殊语法,广泛应用于文件搜索.数据库.正则表达式等领域.现要求各位实现字符串通配符的算法.要求:实现如下2个通配符: *:匹配0个或以上的字符(字符由英文字母和数字0 ...
- 华为OJ:字符串合并处理
字符串合并处理 按照指定规则对输入的字符串进行处理. 详细描述: 将输入的两个字符串合并. 对合并后的字符串进行排序,要求为:下标为奇数的字符和下标为偶数的字符分别从小到大排序.这里的下标意思是字符在 ...
- 华为OJ:字符串加解密
题目描述 1.对输入的字符串进行加解密,并输出. 2加密方法为: 当内容是英文字母时则用该英文字母的后一个字母替换,同时字母变换大小写,如字母a时则替换为B:字母Z时则替换为a: 当内容是数字时则把该 ...
- 华为測试 字符串运用-password截取
Catcher是MCA国的情报员,他工作时发现敌国会用一些对称的password进行通信,比方像这些ABBA.ABA,A,123321,可是他们有时会在開始或结束时增加一些无关的字符以防止别国破解.比 ...
- 华为OJ: 公共字符串计算
有几个需要注意的地方,这个问题是不是大写和小写之间的区别.这样你就输入字符串大写或小写转换的计算前. 第二个,定要清晰.先将s1从[i]处開始与s2的[j]開始匹配,不相等则j++直到j等于s2.le ...
随机推荐
- 2018亚太CDN峰会开幕, 阿里云王海华解读云+端+AI的短视频最佳实践
4月11-12日,2018亚太CDN峰会在北京隆重召开,在11日下午的短视频论坛中,阿里云高级技术专家王海华进行了<短视频最佳实践:云+端+AI>的主题演讲,分享了短视频的生命周期关键点和 ...
- jQuery插件实例四:手风琴效果[无动画版]
手风琴效果就是内容的折叠与打开,在这个插件中,使用了三种数据来源:1.直接写在DOM结构中:2.将数据写在配置项中:3.从Ajax()中获取数据.在这一版中,各项的切换没有添加动画效果,在下一版中会是 ...
- [python] 列表解析式的高效与简洁
方法一(列表解析式): list1 = ["abc","efg","hij"] list2 = [i[0] for i in list1] ...
- tcp/ip 数据进入协议栈时的封装及分用过程图
- 各种SQL查询技巧汇总 (转)
原文地址: https://blog.csdn.net/tim_phper/article/details/54963828 select select * from student; all 查询所 ...
- oracle 查看删除重复数据
1.查询重复数据select * from 表名 where 重复字段(一般为主键)in (select 重复字段 from 表名 group by 重复字段 having count(WF_OID) ...
- JS仿QQ空间鼠标停在长图片时候图片自动上下滚动效果
JS仿QQ空间鼠标停在长图片时候图片自动上下滚动效果 今天是2014年第一篇博客是关于类似于我们的qq空间长图片展示效果,因为一张很长的图片不可能全部把他展示出来,所以外层用了一个容器给他一个高度,超 ...
- C. Greedy Arkady
kk people want to split nn candies between them. Each candy should be given to exactly one of them o ...
- MVC 在action方法中获取当前action的控制器名和action名
如何在某个action方法中获取它所在的控制器和action名称呢. string controllerName = Request.RequestContext.RouteData.Values[& ...
- 详细解读大数据分析引擎Pig&PigLatin语句
Pig 一.Pig的介绍: Pig由Yahoo开发,主要应用于数据分析,Twitter公司大量使用Pig处理海量数据,Pig之所以是数据分析引擎,是因为Pig相当于一个翻译器,将PigLatin语句翻 ...