设为首页 - 加入收藏 ASP站长网(Aspzz.Cn)- 科技、建站、经验、云计算、5G、大数据,站长网!
热搜: 数据 创业者 手机
当前位置: 首页 > 大数据 > 正文

大数求和问题(C++版本)

发布时间:2020-12-30 21:11 所属栏目:125 来源:网络整理
导读:大数求和其实是个纯模拟,我们小学2年级老师就我们通过列竖式求加法,从个位开始加,进位+1,唯一需要值得注意的是我们求出来的结果要为有效值,即00001=1,0000=0 #include iostream#include stringusing namespace std;string nAB(string A,string B);strin

大数求和问题(C++版本)


大数求和其实是个纯模拟,我们小学2年级老师就我们通过列竖式求加法,从个位开始加,进位+1,唯一需要值得注意的是我们求出来的结果要为有效值,即00001=1,0000=0


#include <iostream>
#include <string>
using namespace std;
string nAB(string A,string B);
string vCout(string A);
void vout(string A);
int main()
{
    string nA,nB,nC;
    while(cin>>nA>>nB)
    {
        nC=nAB(nA,nB); //求出A+B
        nC=vCout(nC); //对C进行减0处理
       vout(nC);
    }
    return 0;
}
string nAB(string A,string B)
{
    int nlen,i,nc,nsum;
    string s,c;
    int nlena=A.size();
    int nlenb=B.size();
    if(nlena>=nlenb)
    {
        nlen=nlena;
        c.resize(nlena-nlenb,'0');//给c分配lena-nlenb的内存大小,放0
        B=c+B;   //把B长度补齐
    }
    else
    {
        nlen=nlenb;
        c.resize(nlenb-nlena,'0');
        A=c+A;  //把A长度补齐
    }
    s.resize(nlen,'0');
    nc=0;    //nc表示进位符
    for(i=nlen-1;i>=0;i--)
    {
        nsum=(A[i]-'0')+(B[i]-'0')+nc;
        s[i]=(char)(nsum%10+'0');
        nc=nsum/10;
    }
    if(nc==1)
    {
        s='1'+s;
    }
    return s;
}
string vCout(string A)
{
    int i;
    string s;
    for(i=0;i<A.size();i++)
    {
        if(A[i]!='0')
        {
            break;
        }
    }
    if(i==A.size())
    {
        s='0';
    }
    else
    {
        s=A.substr(i,A.size()-i); //获得从i开始长度为A.size()-i的字符串
    }
    return s;
}
void vout(string A)
{
     cout<<A<<endl;
}

(编辑:ASP站长网)

    网友评论
    推荐文章
      热点阅读