欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

c++大整数加法

程序员文章站 2024-03-23 15:50:40
...

大整数加法

#include<iostream>
#include<cstring>
using namespace std;
int main()
{
    int a1[201],a2[201],a3[201];
    int a=0;#a记录位数
    memset(a3,0,sizeof(a3));#把数组a3元素初始化为0,否则为原地址的元素;
    string s1,s2,s3;
    while((!(cin>>s1>>s2))){};#防止加数位数过大
   #if语句把s1设置为较长的字符串
   if(s1.size()<s2.size())
    {
        string temp;
        temp=s1;
        s1=s2;
        s2=temp;
    }
    #for语句把s1里的字符转化数字存入a1数组
    for(int i=0;i<s1.size();i++)
    {
        a1[i]=s1[i]-'0';
    }
    #for和s3=s3+s2把较短的字符串前面填充为0,是两加数的长短相同
    for(int i=0;i<s1.size()-s2.size();i++)
    {
        s3.push_back('0');
    }
    s3=s3+s2;
    #for将字符s3转换为数字存入a2数组
    for(int i=0;i<s3.size();i++)
    {
        a2[i]=s3[i]-'0';
    }
    #从低位开始相加,低位存入数组
    for(int i=s1.size()-1;i>=0;i--)
    {
        a3[-i+s1.size()-1]+=a1[i]+a2[i];#先相加,数字存入a3
        a+=1;#做一次加法,a记录一次
        if(a3[-i+s1.size()-1]>9)#处理进位
        {
            a3[-i+s1.size()-1]%=10;
            a3[-i+s1.size()]+=1;
            if(i==0)a+=1;#如果是最高位大于9,则还有进一次位
        }
    }
    #for从最高位开始输出
    for(int i=a-1;i>=0;i--)
    {
        cout<<a3[i];
    }
}
相关标签: c++大整数加法