为了账号安全,请及时绑定邮箱和手机立即绑定

华为笔试——C++字符串四则运算的实现

标签:
C++

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

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

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

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

 1 #include <iostream> 
 2 #include <string> 
 3 using namespace std; 
 4 int main() 
 5 { 
 6     int i = 0; 
 7     string str; 
 8     cin >> str; 
 9     int n = str.length();
 10     char *num = new char[n];
 11     strcpy(num, str.c_str());
 12     //char num[10] = "8+7*2-9/3";
 13     int num2[15] = {0};
 14     for (i=0;i<n;i++)
 15     {
 16         if (num[i] >= '0'&&num[i] <= '9')
 17         {
 18             num2[i] = num[i]-48;//char转换成int19         }
 20     }
 21     for (i = 0; i < n; i++)
 22     {
 23         if (num[i] == '*')
 24         {
 25             num2[i - 1] = num2[i - 1] *num2[i + 1];
 26             for (int j = i; j <(n-2); j++)
 27             {
 28   num[j] = num[j + 2];//长度-229     num2[j] = num2[j + 2];
 30             }
 31         }
 32         if (num[i] == '/')
 33         {
 34       num2[i - 1] = num2[i - 1] /num2[i + 1];
 35      for (int j = i; j <(n-2); j++)
 36             {
 37     num[j] = num[j + 2];//长度-238   num2[j] = num2[j + 2];
 39             }
 40         }
 41     }
 42     for (i = 0; i < n; i++)
 43     {
 44         if (num[i] == '+')
 45         {
 46             num2[i - 1] = num2[i - 1]+num2[i + 1];
 47             for (int j = i; j <(n-2); j++)
 48             {
 49       num[j] = num[j + 2];//长度-2
 50            num2[j] = num2[j + 2];
  51             }
  52         }
  53         if (num[i] == '-')
  54         {
  55             num2[i - 1] = num2[i - 1] -num2[i + 1];
  56             for (int j = i; j <(n-2); j++)
  57             {
  58                 num[j] = num[j + 2];//长度-2
  59                 num2[j] = num2[j + 2];
  60             }
  61         }
  62     }
  63     cout << num2[0] << endl;
  64     return 0;
  65 }

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

变量名|  i012345678
num8+7*2-9/3
num2807020903

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

 

变量名| i012345678
num8+7-9/3/3
num28014090303

计算“ / ”后:

变量名| i012345678
num8+7-9/3/3
num28014030303

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

运行如图所示:

https://img1.sycdn.imooc.com//5c72981900018fed03300105.jpg

 原文作者:会武术之白猫

原文链接:https://www.cnblogs.com/ljy1227476113/p/9556420.html

点击查看更多内容
TA 点赞

若觉得本文不错,就分享一下吧!

评论

作者其他优质文章

正在加载中
  • 推荐
  • 评论
  • 收藏
  • 共同学习,写下你的评论
感谢您的支持,我会继续努力的~
扫码打赏,你说多少就多少
赞赏金额会直接到老师账户
支付方式
打开微信扫一扫,即可进行扫码打赏哦
今天注册有机会得

100积分直接送

付费专栏免费学

大额优惠券免费领

立即参与 放弃机会
意见反馈 帮助中心 APP下载
官方微信

举报

0/150
提交
取消