#include<cstdio>
#include<string.h>
#include<malloc.h>
#include<stdlib.h>
#define M 10000
void add(char *a,char *b)
{
? int i,j,alen,blen,lmax;
? alen=strlen(a);
? blen=strlen(b);
? lmax=alen>blen?alen:blen;
? int *aa,*bb;?
?? aa=(int*)malloc(sizeof(int)*alen);
?? bb=(int*)malloc(sizeof(int)*blen);
?? for(i=0;i<alen;i++)
???? aa[i]=0;
???? for(i=0;i<blen;i++)
?????? bb[i]=0;
?
??? for(i=alen-1,j=0;i>=0;i--,j++)
??? aa[j]=a[i]-'0';
?for(i=blen-1,j++)
?bb[j]=b[i]-'0';
?
?? int *c;
??c=(int*)malloc(sizeof(int)*alen);
??for(i=0;i<alen;i++)
????? c[i]=0;
??
??? for(i=0;i<lmax;i++)
?????? c[i]=aa[i]+bb[i];
??????
?????? for(i=0;i<lmax;i++)
???????? {
???????? ?if(c[lmax-1]>9)
???????? ?? {
???????? ?? ?lmax+=1;
???????? ?? }
???????? ?? if(c[i]>9)
???????? ??? {
???????? ??? ?c[i]-=10;
???????? ??? ?c[i+1]+=1;
???????? ??? }
???????? }
?????
????? for(i=lmax-1;i>=0;i--)
???????? printf("%d",c[i]);
???????? printf("n");
???
??? free(aa);
??? free(bb);
??? free(c);
}
int main()
{
?int T;
?scanf("%d",&T);
?while(T--)
?{
??char *a,*b;
??? a=(char*)malloc(sizeof(char)*M);
??? b=(char*)malloc(sizeof(char)*M);
??? scanf("%s%s",a,b);
??? add(a,b);
??? free(a);
??? free(b);
?}
?return 0;
}
上面有错误;下面可以使用:
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
#define M 1000
char a[M];
char b[M];
char sum1[M];
char sum2[M];
int sum[M+100];
int main()
{
int T,ca;
scanf("%d",&T);
for(ca=1;ca<=T;ca++)
{
memset(a,sizeof(a));
memset(b,sizeof(b));
memset(sum1,sizeof(sum1));
memset(sum2,sizeof(sum2));
memset(sum,sizeof(sum));
int i,l,d,t;
scanf("%s%s",b);
for(i=strlen(a)-1,j++)
sum1[j]=a[i]-'0';
for(i=strlen(b)-1,j++)
sum2[j]=b[i]-'0';
l=strlen(a)>=strlen(b)?strlen(a):strlen(b);
for(i=0;i<l;i++)
sum[i]=sum1[i]+sum2[i];
for(i=0;i<l;i++)
{
if(sum[l-1]>9)
l++;
if(sum[i]>9)
{
sum[i]-=10;
sum[i+1]+=1;
}
}
printf("Case %d:n",ca);
printf("%s + %s = ",b);
for(i=l-1;i>=0;i--)
{
printf("%d",sum[i]);
}
printf("n");
if(ca<T)
printf("n");
}
}