杭大HD1002大数相加的提问,该怎么处理

杭大HD1002大数相加的提问
输出的结果是正确的,但可能我不理解题目的要求,输出和输入等,希望大神帮我看看代码!
程序用C写,编译器是GCC,测试过结果没问题,不知道该怎么改
#include<stdio.h>
void sumLarge(char*,char*,char*);
void reverse(char*);
int  length(char*);
int main()
{
int t;
int times;
t=0,times=1;
char a[1000];
char b[1000];
char sum[1001];
scanf("%d",&t);
while(t--)
{
scanf("%s %s",a,b);
sumLarge(a,b,sum);
printf("Case %d:\n",times);
printf("%s + %s = %s\n\n",a,b,sum);
times++;
}
return 0;
}

void sumLarge(char *p,char *q,char *s)
{
int c=0;
int p_len=0,q_len=0;
int i=0,j=0;
char *m,*n,*sum;
sum=s;
p_len=length(p);
q_len=length(q);
if(p_len>q_len)
{
m=p;
n=q;
i=p_len;
j=q_len;
}
else
{
m=q;
n=p;
i=q_len;
j=p_len;
}
reverse(m);
reverse(n);

for(j;j<i;j++)
{
*(n+sizeof(char)*j)='0';
}
while(i--)
{
*sum=*m+*n-48+c;
if(*sum>57)
{
c=1;
*sum=*sum-10;
}
else
{
c=0;
}
sum++,m++,n++;
}
if(c==1)*sum='1';
reverse(s);
}

void reverse(char *string)
{
char *p=string;
char *q,temp;
int len=0;
len=length(string);
q=string+sizeof(char)*(len-1);
len=len/2;
while(len--)
{
temp=*p;
*p=*q;
*q=temp;
p++,q--;
}
}

int length(char *string)
{
char *p=string;
int len=0;
while(*p!='\0')
{
len++;
p++;
}
return len;
}

------解决方案--------------------

#include<stdio.h>
void sumLarge(char*,char*,char*);
void reverse(char*);
int  length(char*);
int main()
{
int t;
int times;
t=0,times=1;
char a[1000];
char b[1000];
char sum[1001];
scanf("%d",&t);
while(t--)
{
scanf("%s %s",a,b);
printf("Case %d:\n",times++);
printf("%s + %s = ", a, b);//这里先输出了再算sum吧。。因为你的sum函数会将a,b反转,下边输出就会出错了。。
sumLarge(a, b, sum);
printf("%s\n", sum);
if(t) putchar('\n');//看清题目,Output a blank line between two test cases.最后一个case不用输出blank line。。
}
return 0;
}

void sumLarge(char *p,char *q,char *s)
{
int c=0;
int p_len=0,q_len=0;
int i=0,j=0;
char *m,*n,*sum;
sum=s;
p_len=length(p);
q_len=length(q);
if(p_len>q_len)
{
m=p;
n=q;
i=p_len;
j=q_len;
}
else
{
m=q;
n=p;
i=q_len;
j=p_len;
}
reverse(m);
reverse(n);

for(j;j<i;j++)
{
*(n+j)='0';
}
while(i--)
{
*sum=*m+*n-48+c;
if(*sum>57)
{
c=1;
*sum=*sum-10;
}
else
{
c=0;