杭电oj1002不明WA

杭电oj1002 高精度加法
测试什么的感觉都没问题,但是始终是WA
题目如下

img

我的代码如下
    #include 
    #include
    #include
    #include
    #include
    using namespace std;

    char s1[1050]={0},s2[1050]={0};
    int a[1050]={0},b[1050]={0},c[1050]={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'0';
        for(int i=0; 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");
        }
        n = 1;

        }
        return 0;
        }





#include<bits/stdc++.h>

using namespace std; 

int a[1000],b[1000],c[1000]; 

void init1(int a[])
{
    char s[1000];//通过字符数组的形式输入数字 
    
    gets(s);
    
    a[0]=strlen(s);//a[0]保存字符数组s的位数 
    
    for(int i=1;i<=a[0];i++)
    {
        a[i]=s[a[0]-i]-'0';//将字符数组转换为整形数组,并逆序储存 
    }
}

void init2(int a[])
{
    string s;//通过字符串的形式输入数字 
    
    getline(cin,s);//或cin>>s; 
    
    a[0]=s.size();//a[0]保存字符串s的位数 或s.length(); 
    
    for(int i=1;i<=a[0];i++)
    {
        a[i]=s[a[0]-i]-'0';//将字符串转换为整形数组,并逆序储存 
    }
}

void jiafa(int a[],int b[],int c[])
{
    int x=0;//暂存进位,从0开始  
    int i=1;//位数的下标 
    
    while(i<=a[0]||i<=b[0])
    {
        c[i]=a[i]+b[i]+x;//对应位相加+上一次的位数 
        
        x=c[i]/10;//进位 
        
        c[i]=c[i]%10;//进位后剩下的数字 
        
        i++;//模拟下一位 
    }
    
    c[i]=x;//最后的位数 
    c[0]=i;//将和c的位数统一保存在c[0]中 
}

void aa(int a[])//删除数组a的前导0 
{
    while(a[0]>=1&&a[a[0]]==0)
    {
        a[0]--;    
    }    
} 

int main()
{
    init1(a);
    init1(b);//输入    
    
    aa(a);
    aa(b);//删除前导0
    
    jiafa(a,b,c);//a+b=c
    
    aa(c);//删除c的前导0
    
    for(int i=c[0];i>=1;i--)
    {
        cout<<c[i];//输出每一位    
    } 
}