大整数版A+B问题
问题是:输入两个大整数,其位数范围为10-500,输出其和。我的想法是将这两个数分别用一个字符数组来表示,然后将两个数组内的数对应相加,若相加后大于9则除以10取余并将该位数的前一位加一,最后输出,但结果始终不对,希望可以有人指点一下,谢谢!
#include<stdio.h>
#include<string.h>
int main(void)
{
char a[500],b[500],c[1001],d[1001];
int i,j,t,k;
while(scanf("%s%s",a,b)==2)
{
if(strlen(a)>strlen(b))
{
t=strlen(a)-strlen(b);
for(i=strlen(a)-1;i>t-1;i--)
{
j=strlen(b)-1;
c[i]=a[i]+b[j];
if(c[i]>9)
{
c[i]=c[i]%10;
a[i-1]+=1;
}
j--;
}
k=strlen(a)-1;
for(j=0;j<k;j++)
{
printf("%d",c[j]);
}
}
else if(strlen(a)<strlen(b))
{
t=strlen(b)-strlen(a);
for(i=strlen(b)-1;i>t-1;i--)
{
j=strlen(a)-1;
c[i]=a[j]+b[i];
if(c[i]>9)
{
c[i]=c[i]%10;
a[i-1]+=1;
}
j--;
}
k=strlen(b);
for(j=0;j<k;j++)
{
printf("%d",c[j]);
}
}
else
{
for(i=strlen(a)-1;i>=0;i--)
{
c[i]=a[i]+b[i];
if(c[i]>9)
{
c[i]=c[i]%10;
a[i-1]+=1;
}
k=strlen(a);
for(j=0;j<k;j++)
{
printf("%d",c[j]);
}
}
if(c[0]>9)
{
j=strlen(b);
for(i=strlen(c)-1;i>0;i--)
{
d[j]=c[i];
j--;
}
d[1]=c[0]%1;
d[0]=1;
k=strlen(d);
for(j=0;j<k;j++)
{
printf("%d",d[j]);
}
}
}
printf("\n");
}
return 0;
}