大整数求和

【问题描述】大整数求和
用某种程序设计语言进行编程时,可发能需要处理非常大或者运算精度要求非常高的整数(称为大整数),这种大整数用该语言的基本数据类型无法直接表示。处理大整数的一般方法是用数组存储大整数,即开辟一个比较大的整型数组,数组元素代表大整数的一位,通过数组元素的运算模拟大整数的运算。
已知大整数,,求C=A+B。可以用两个顺序表A和B分别存储两个大整数,用顺序表C存储求和结果。为了便于执行加法运算,可以将大整数的低位存储到顺序表的低端,顺序表的长度表示大整数的位数。
【输入形式】两个大整数的数位数字。
【输出形式】按照从高位到低位的顺序输出求和结果C。
【样例输入】
987654321
99997531
【样例输出】
1087651852
【说明】如果从键盘输入大整数,一般用字符数组存储,这样无需对大整数进行分段输入,当然输入到字符数组后需要将字符转换为数字。

#include <iostream>
#include <cstdio>
using namespace std;
int ma (int a,int b)
{
    if(a>b)
        return a;
    else
        return b;
}
int mi (int a,int b)
{
    if(a<b)
        return a;
    else
        return b;
}
int main()
{
    char s1[100],s2[100];
    int i,j,n1=0,n2=0,m1,m2;
    scanf("%s",s1);
    scanf("%s",s2);
    for(i=0;s1[i];i++)
    {
        n1++;
    }
    for(i=0;s2[i];i++)
    {
        n2++;
    }
    int a1[n1],a2[n2];
    for(i=0;i<n1;i++)
    {
        a1[i]=s1[i]-'0';
    }
    for(i=0;i<n2;i++)
    {
        a2[i]=s2[i]-'0';
    }
    m2=ma(n1,n2);
    m1=mi(n1,n2);
    int b[m2],n=0;
    for(i=0;i<m2;i++)
    {
        n1--;
        n2--;
        if(n1>-1&&n2>-1)
        {
            b[i]=a1[n1]+a2[n2]+n;
            if(b[i]>=10&&i!=m2-1)
            {
                n=b[i]/10;
                b[i]=b[i]%10;
            }
            else if(b[i]<10&&i!=m2-1)
                n=0;
            else if(i==m2-1)
            {
                b[i]=b[i];
            }
        }
        else if(n1<=-1&&n2>-1)
        {
            b[i]=a2[n2]+n;
            if(b[i]>=10&&i!=m2-1)
            {
                n=b[i]/10;
                b[i]=b[i]%10;
            }
            else if(b[i]<10&&i!=m2-1)
                n=0;
            else if(i==m2-1)
                b[i]=b[i];
        }
        else if(n2<=-1&&n1>-1)
        {
            b[i]=a1[n1]+n;
            if(b[i]>=10&&i!=m2-1)
            {
                n=b[i]/10;
                b[i]=b[i]%10;
            }
            else if(b[i]<10&&i!=m2-1)
                n=0;
            else if(i==m2-1)
                b[i]=b[i];
        }

    }
    for(i=m2-1;i>=0;i--)
    {
        cout<<b[i];
    }
    return 0;




}

发布了31 篇原创文章 · 获赞 8 · 访问量 2157

猜你喜欢

转载自blog.csdn.net/weixin_44034024/article/details/104660735