大整数加法

来源:互联网 发布:2016年11月网络热搜 编辑:程序博客网 时间:2024/04/27 01:48

//今天同学问的一个大整数加法怎么写,写了一下,好多错误,下面的是正确的。

<pre name="code" class="cpp">#include<stdio.h>#include<string.h>#define MAX(a,b) (a>b?a:b)char a[10010];char aa[10010];char b[10010];char bb[10010];int sum[100010];int main(){int i,j,l,l1,l2;char c;while(scanf("%s",a)!=EOF){memset(sum,0,sizeof(sum));l1=strlen(a);j=0;for(i=l1-1;i>=0;i--)aa[j++]=a[i];getchar();scanf("%c",&c);scanf("%s",b);l2=strlen(b);j=0;for(i=l2-1;i>=0;i--)bb[j++]=b[i];l=MAX(l1,l2);if(l1>=l2){j=0;for(i=0;i<l2;i++){sum[j]+=((aa[i]-'0')+(bb[i]-'0'));if(sum[j]>=10){sum[j+1]+=sum[j]/10;sum[j]%=10;}j++;}for(i=l2;i<l1;i++)sum[j++]=aa[i]-'0';}else{j=0;for(i=0;i<l1;i++){sum[j]+=((aa[i]-'0')+(bb[i]-'0'));if(sum[j]>=10){sum[j+1]+=sum[j]/10;sum[j]%=10;}j++;}for(i=l1;i<l2;i++)sum[j++]=bb[i]-'0';}if(!sum[l])l--;for(i=l;i>=0;i--)printf("%d",sum[i]);printf("\n");}return 0;}


0 0