写的有点乱。还好通过了。
#include <stdio.h>
#include <string.h>
#define N 1000
int main(void)
{
int n,last=0;
scanf("%d",&n);
while(n--)
{
char a[N],b[N],c[N];
scanf("%s%s",a,b);
int lena=strlen(a),lenb=strlen(b);
if(lena > lenb)
{
int i,flag=0;
strrev(a);
strrev(b);
strcpy(c,a);
for(i=0;i<lenb;++i)
{
int num=(a[i]-'0')+(b[i]-'0')+flag;
if(num > 9)
{
c[i]=num%10+'0';
flag=1;
}
else
{
c[i]=num+'0';
flag=0;
}
}
while(flag && a[i]!='\0')
{
int num=a[i]-'0'+flag;
if(num > 9)
{
c[i++]=num%10+'0';
}
else
{
c[i++]=num + '0';
flag=0;
}
}
if(flag)
c[i]='1';
}
else
{
int i,flag=0;
strrev(a);
strrev(b);
strcpy(c,b);
for(i=0;i<lena;++i)
{
int num=(a[i]-'0')+(b[i]-'0')+flag;
if(num > 9)
{
c[i]=num%10+'0';
flag=1;
}
else
{
c[i]=num+'0';
flag=0;
}
}
while(flag && b[i]!='\0')
{
int num=b[i]-'0'+flag;
if(num > 9)
{
c[i++]=num%10+'0';
}
else
{
c[i++]=num + '0';
flag=0;
}
}
if(flag)
c[i]='1';
}
if(last)putchar('\n');
printf("Case %d:\n%s + %s = %s\n",++last,strrev(a),strrev(b),strrev(c));
}
return 0;
}