大数相加用字符串来计算C++

代码如下

#include <iostream>
#include<bits/stdc++.h>
using namespace std;
string add(string a,string b){
   int alen=a.size(),blen=b.size();
   string c;
   int i=0;//i表示已经处理数字的个数
   int flag=0;//flag表示进位
   while(((alen-i)>0)&&((blen-i)>0)){//此部分表示对公共部分的相加
        int temp=(a[alen-i-1]-'0')+(b[blen-i-1]-'0')+flag;//temp用来表示得到的结果,用int方便计算flag的值和保存结果
        flag=temp/10;//flag检测有没有进位,如果temp大于或等于10,flag就会等于1,否则等于0
        c+=(temp%10)+'0';//字符串对字符的处理是比较方便的,这个表达式可以在c的后面把得到的结果放进去
        i++;//计算完了要对i进行+1,然后对下一个字符进行处理
   }
   //以下两个循环分别表示a与b长度不一样时,长度更长的那个的结果
   while((alen-i)>0){
        int temp=(a[alen-i-1]-'0')+flag;
        flag=temp/10;
        c+=(temp%10)+'0';
        i++;
   }
   while((blen-i)>0){
        int temp=(b[blen-i-1]-'0')+flag;
        flag=temp/10;
        c+=(temp%10)+'0';
        i++;
   }
   if(flag)c+='1';//表示结果的第一位
   
   reverse(c.begin(),c.end());//把得到的结果进行反转
   return c;
}
int main()
{
   string a,b;
   cin>>a>>b;
   cout<<add(a,b)<<endl;
    return 0;
}
看了千遍不如自己动手做一遍,自己试着写一下,其实就是字符相加处理,进位处理,长度处理,结果第一位的处理这几个部分,动手写一写吧。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值