杭电1002,大数相加不能AC,希望看看我的代码哪里有问题。
程序代码:#include "stdio.h"
#include "string.h"
int main()
{
char a[1000],b[1000],t;
int len,i,A,B,n=1000,t1,j;
scanf("%d",&t1);
for(j=1;j<=t1;j++)
{
char c[1001]={0};
n=1000;
scanf("%s %s",a,b);
A=strlen(a);
B=strlen(b);
if(A>=B)len=A;
if(B>A)len=B;
for(i=0;i<A-1;i++,A--) ////反序a
{
t=a[i];
a[i]=a[A-1];
a[A-1]=t;
}
for(i=0;i<B-1;i++,B--) ///反序b
{
t=b[i];
b[i]=b[B-1];
b[B-1]=t;
}
A=strlen(a);
B=strlen(b);
for(i=0;i<A;i++)a[i]=a[i]-'0';///换成整数
for(i=0;i<B;i++)b[i]=b[i]-'0';
c[0]=a[0]+b[0]; ///先计算个位数
for(i=1;i<len;i++)
{
c[i]=a[i]+b[i]+c[i-1]/10; ///i位相加并加上前一位进数
c[i-1]=c[i-1]%10; ///
}
c[i+1]=c[i]/10; ///计算最高位
c[i]%=10;
while(!c[n]) ///测量数组长度
n--;
printf("Case %d:\n",j);
for(i=A-1;i>=0;i--)
{
printf("%d",a[i]);
}
printf(" + ");
for(i=B-1;i>=0;i--)
{
printf("%d",b[i]);
}
printf(" = ");
for(i=n;i>=0;i--)
{
printf("%d",c[i]);
}
printf("\n");
}
return 0;
}直接看看我的代码吧,别自己写了,我希望知道我哪里有问题。谢谢了。已经加上我的注释
[ 本帖最后由 skyn 于 2012-11-5 23:52 编辑 ]









