n个大数加法(高精度)


#include <iostream>
#include <stdio.h>
#include <string.h>
using namespace std;
int dx(char a[])
{
    int tmp,len;
    len=strlen(a);
    for(int i=0;i<len/2;i++)
    {
        tmp=a[i];
        a[i]=a[len-1-i];
        a[len-1-i]=tmp;
    }
}
int add(char a[],char b[],char c[])
{
    int i,d,e,len1,len2;
    len1=strlen(a);
    len2=strlen(b);
    dx(a);
    dx(b);
    e=0;
    for(i=0;i<len1&&i<len2;i++)
    {
        d=a[i]-'0'+b[i]-'0'+e;
        c[i]=d%10+'0';
        e=d/10;
    }
    if(i<len1)
    {
        for(;i<len1;i++)
        {
            d=a[i]-'0'+e;
            c[i]=d%10+'0';
            e=d/10;
        }
    }
    else
    {
        for(;i<len2;i++)
        {
            d=b[i]-'0'+e;
            c[i]=d%10+'0';
            e=d/10;
        }
    }
    if(e)
    c[i++]=e+'0';
    c[i]=0;
    int t=i;
    dx(c);
}
int main()
{
    int m,n;
    while(cin>>m)
    {
        char a[110],b[110],c[110],d[110],f[110];
        if(m==1)
        cout<<m<<endl;
        else
        {
            cin>>a>>b;
            add(a,b,c);
            for(int i=3;i<=m;i++)
            {
               cin>>d;
               add(c,d,f);
               strcpy(c,f);
            }
            cout<<c<<endl;
        }
    }
    return 0;
}

你可能感兴趣的:(n个大数加法(高精度))