杭电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 编辑 ]