华为笔试——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 ...
随机推荐
- November 09th, 2017 Week 45th Thursday
If we did all the things we are capable of, we would literally astound ourselves. 我们如果尽全力去完成我们能做到的事情 ...
- 网页loading GIF图片(加载)
http://www.lanrentuku.com/gif/a/loading.html
- Redis系列七:redis持久化
redis支持RDB和AOF两种持久化机制,持久化可以避免因进程退出而造成数据丢失 一.RDB持久化 RDB持久化把当前进程数据生成快照(.rdb)文件保存到硬盘的过程,有手动触发和自动触发 手动触发 ...
- Redis系列一:reids的单机版安装
环境:VM+centos6+xshell 1.准备好linux的虚拟机,这里用的是centos6,具体方法百度 2.进入software目录,创建一个redis的目录来存放下载的redis包 cd s ...
- JVM内存管理及GC机制
一.概述 Java GC(Garbage Collection,垃圾收集,垃圾回收)机制,是Java与C++/C的主要区别之一,作为Java开发者,一般不需要专门编写内存回收和垃圾清理代码,对内存泄露 ...
- Python2.7-csv
csv模块,用于读写 csv 文件,常用 reader 和 writer 对象进行操作 1.模块的类 1.1 Dialect 对象,设置 csv 文件的各种格式,包括分隔符,引用符,转义符等 1.1. ...
- Vue表单绑定(单选按钮,选择框(单选时,多选时,用 v-for 渲染的动态选项)
<!DOCTYPE html><html> <head> <meta charset="utf-8"> ...
- linux shell中'',""和``的区别
今天学习一个bash脚本,看到有一条:bin=`dirname "$0"` (dirname filename是输出该文件所在的目录,$0是该bash文件的文件名,在bash中一般 ...
- DQN(Deep Reiforcement Learning) 发展历程(二)
目录 动态规划 使用条件 分类 求解方法 参考 DQN发展历程(一) DQN发展历程(二) DQN发展历程(三) DQN发展历程(四) DQN发展历程(五) 动态规划 动态规划给出了求解强化学习的一种 ...
- 在 R 中估计 GARCH 参数存在的问题
目录 在 R 中估计 GARCH 参数存在的问题 GARCH 模型基础 估计 GARCH 参数 fGarch 参数估计的行为 结论 译后记 在 R 中估计 GARCH 参数存在的问题 本文翻译自< ...