高精度:一位一位存
#include<stdio.h> #include<string.h> main() { int n,l1,l2,i,j,k,m,p; char a[1000],b[1000],c[1000],d[1000],s[1001]; while(scanf("%d ",&n)!=EOF) { for(p=1; p<=n; p++) { scanf("%s %s",a,b); l1=strlen(a); l2=strlen(b); k=0; for(i=0; i<1001; i++) s[i]='0'; if(l1>l2) { for(i=0; i<l1-l2; i++) c[i]='0'; for(j=l1-l2; j<l1; j++) c[j]=b[j-l1+l2]; for(i=0; i<l1; i++) d[i]=a[i]; m=l1; } else { for(i=0; i<l2-l1; i++) d[i]='0'; for(j=l2-l1; j<l2; j++) d[j]=a[j+l1-l2]; for(i=0; i<l2; i++) c[i]=b[i]; m=l2; } for(i=m-1; i>=0; i--) { s[k]=c[i]-'0'+d[i]-'0'+s[k]-'0'; if(s[k]>=10) { s[k]-=10; s[k+1]+=1; } k++; } printf("Case %d:\n",p); printf("%s + %s = ",a,b); for(i=k-1; i>=0; i--) printf("%d",s[i]); printf("\n"); if(p<n)printf("\n"); } } }
原文地址:http://blog.csdn.net/acm_baihuzi/article/details/40683001