//基于ZOJ1002写,很好理解,不写注释了,懒。。。
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#define MAX 100000
int addtion( char a[],char b[],char back[]); //高精度加法,位数不限 a+b=back
int main()
{
char a[MAX],b[MAX],back[MAX];
int i,j,n,t;
scanf("%d",&n);
for( t=1;t<=n;t++ )
{
printf("Case %d:/n",t);
scanf("%s%s",a,b);
j=addtion(a,b,back); //调用
printf("%s + %s = %s/n",a,b,back);
if(t!=n)
printf("/n");
}
return 0;
}
int addtion( char a[],char b[],char back[])
{
int la, lb, l, z=0, x, y,sign=0;
char *c;
int i=0,j;
la=strlen(a)-1;
lb=strlen(b)-1;
l=la>lb?la+2:lb+2;
c=(char *)malloc( sizeof(char)*l ); //辅
while(la>=0 || lb>=0) //主干了
{
z=0;
if(la<0) x=0; else x=a[la]-'0';
if(lb<0) y=0; else y=b[lb]-'0';
if(sign) z=+1;
z+=x+y;
if(z>=10)
{
sign=1;
z%=10;
}
else
sign=0;
c[i++]=z+'0';
la--;lb--;
}
if(sign)
c[i++]='1';
c[i]='/0';
z=0;
for( j=i-1;j>=0;j-- )
back[z++]=c[j];
back[z]='/0';
return z;
}