高精度:一位一位存
#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