杭电OJ1002 高精度A+B运算

做杭电OJ1002的过程中遇到了亿些问题
自己在编译器上运行正常,但在OJ平台上就wrong answer了
希望帮忙看下问题在哪 T-T
    #include <iostream>
    #include<cstring>
    #include<cstdio>
    #include<cstdlib>
    #include<minmax.h>
    using namespace std;

    char s1[1005],s2[1005];
    int a[1005]={0},b[1005]={0},c[1005]={0};

    int main()
    {
        int n=1;
        int lena,lenb,lenc,T;
        while(scanf("%d",&T) != EOF){

        while(T--){
        scanf("%s%s",&s1,&s2);
        lena = strlen(s1);
        lenb = strlen(s2);
        for(int i=0; i<lena; i++)
            a[lena-i] = s1[i] - '0';
        for(int i=0; i<lenb; i++)
            b[lenb-i] = s2[i] - '0';
        lenc = max(lena,lenb) + 1;
        for(int i=1; i<=lenc; i++){
            c[i] += a[i] + b[i];
            c[i+1] = c[i]/10;
            c[i] = c[i]%10;
        }
        for(int i=1; i<=lenc; i++){
            if(c[lenc] == 0 && lenc > 0)
            {
                lenc--;
                if(lenc==1)
                    break;
            }
        }
        printf("Case %d:\n",n++);
        printf("%s + %s = ",s1,s2);

        for(int i=lenc; i>0; i--){
            printf("%d",c[i]);
            c[i] = 0;
        }
        printf("\n");
        if(T != 0)
        printf("\n");
        }
        }
        return 0;
        }






img


1、示例:
#include <stdio.h>
#include <math.h>
int main()
{
    long a,b,sum;
    scanf("%ld%ld\n",&a,&b);
    sum = a + b;
    printf("%ld\n",sum);
    return 0;
}
 
 
2、示例:超长(超100位)加法运算
 
#include <stdio.h>
#include <string.h>
#define  N 10000
 
int main()
{
    char num1[N] = {0},num2[N] = {0},result[N]={0};
    long len_1,len_2,len;
    int i;
    scanf("%s %s",num1,num2);
    
    len_1 = strlen(num1);
    len_2 = strlen(num2);
    len = (len_1>len_2) ? len_1:len_2;
    len++;
    
    for(i = 0 ;i<len_1&&i<len_2; i++)
    {
        result[len-1-i] = (num1[len_1-1-i] - '0') + (num2[len_2-1-i] - '0');
    }
 
    if(len_1 >len_2)
    {
        for(;i<len_1;i++)
        {
            result[len-1-i] = num1[len_1-1-i] - '0';
        }
 
    }
    else
    {
        for(;i<len_2;i++)
        {
            result[len-1-i] = num2[len_2-1-i] - '0';
        }
    }
 
    for(i = len - 1;i>0;i--)
    {
        if(result[i]>=10)
        {
            result[i] = result[i]%10;
            result[i-1]++;
        }
     }
     
     //判断是后位数多出一位 9+8=17变成2位数,如果没有则全部前移。并变回数字的ASC2码 
     if(result[0]!= 0)
     {
         for(i = 0;i<len;i++)
         {
             result[i] += '0';
         }
         result[len] = '\0';
      }
     else
     {
         for(i=1;i<len;i++)
         {
             result[i-1] = result[i] + '0';
         }
         result[len-1] = '\0';
      }
      
      printf("两个数相加的结果是:\n");
      puts(result);
      
     return 0;
 
}  
 
 
3、OJ通过的答案
 
#include <stdio.h>
int main()
{
    int a,b;
    while(scanf("%d %d",&a,&b)==2)
    {
       printf("%d\n",a+b);
    }
    return 0;
}