大数相加

来源:互联网 发布:mac lol 国服下载 编辑:程序博客网 时间:2024/06/06 09:36
我们都知道计算a+b,如果两个数非常的大,以至于long型也无法表示的时候,这个时候怎么办了,例如我要计算:12454541234554333334546533425324455+34213432354353245541312425654433556553233=?
或者个大的数相加的时候怎么办啊!
 
这个时候自然会想到数组了,源码如下:
#include <iostream>#include <string>using namespace std;void add(char a[],char b[],char ans[]){        int i,j,k,up,x,y,z,l;        char *c;        if (strlen(a)>strlen(b)) l=strlen(a)+2; else l=strlen(b)+2;        c=(char *) malloc(l*sizeof(char));        i=strlen(a)-1;        j=strlen(b)-1;        k=0;up=0;        while(i>=0||j>=0)        {                if(i<0) x='0'; else x=a[i];                if(j<0) y='0'; else y=b[j];                z=x-'0'+y-'0';                if(up) z+=1;                if(z>9) {up=1;z%=10;} else up=0;                c[k++]=z+'0';                i--;j--;        }        if(up) c[k++]='1';        i=0;        c[k]='\0';        for(k-=1;k>=0;k--)                ans[i++]=c[k];        ans[i]='\0';        free(c);}int main(void){        char a1[1000],a2[1000];        char ans[1000];        cin>>a1>>a2;        add(a1,a2,ans);  cout<<a1<<" + "<<a2<<" = "<<ans<<endl;        return 0;}