2019阿里模拟机试以及阿里实习笔试题之字符串实现加减乘除算术(详解+简化,比网上答案更短,思路更清晰)

题目要求:
两个数使用string 表示,请实现一个函数,将他们相加。
注意:
1. 该数可能包含小数,比如:123.07+8796
2. 输入可能有误,请检查是否合法,不合法返回值为false
3. 该数不包含科学计数法。

关键在于提取字符串中的数字信息,然后分辨数字的合法性。比如02+1.2,2.+2,2.3+.2等等不合法情况。主要思路是首先提取符号“.”和“+”的位置,为提取数字做准备,记录符号位置以后,就可以提取一个个单独数字构成一个数。细节中要注意“.”的问题,可能存在一个,且在加号前或者后,可能不存在,可能同时存在两个,一个在加号前,一个在加号后。
附上自己写的代码,仅供参考:

#include<iostream>
#include<cmath>
#include<string> 
using namespace std;

int main()
{
    string a;
    int i,d,k=0,p=0,l1=0,l2=0;   //k为加号位置,l1为第一个小数点位置,l2记录的二个小数点的位置,p记录加符号的数量
    double q,b,c;  //q为第一个数,b为第二个数,c为结果
    cin>>a;
    d=a.length();
    for(i=0;i<=d-1;++i)
    {
        if((a[i]>='0'&&a[i]<=
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值