浙大PAT乙级1048测试点4、5无法通过,求解

如图所示,目前我用的例子测试输出都是正确的,求解什么例子会出现错误或者如何修改才可以通过测试点4和5,谢谢!

img


#include<stdio.h>
char A[100],B[100];

int max(int a,int b)
{
    if (a>=b)
        return a;
    else
        return b;
}

void zero_padding(int len_a,int len_b)//输入的规则就是len_a>len_b
{
    int num_0,i;
    if (len_a>len_b)//对B补零
    {
        num_0 = len_a-len_b;
        for (i=len_b-1;i>=0;i--)
            B[i+num_0] = B[i];
        for (i=0;i<num_0;i++)
            B[i] = '0';
    }
    else //对a补零
    {
        num_0 = len_b-len_a;
        for (i=len_a-1;i>=0;i--)
            A[i+num_0] = A[i];
        for (i=0;i<num_0;i++)
            A[i] = '0';
    }
}

int main(){
    int i,len,temp;
    char a;
    int lenA = 0;
    int lenB = 0;
    for (i=0;i<100;i++)
    {
        scanf("%c",&a);
        if (a==' ')
            break;
        A[i] = a;
        lenA++;
    }
    for (i=0;i<100;i++)
    {
        scanf("%c",&a);
        if (a=='\n')
            break;
        B[i] = a;
        lenB++;
    }
    if (lenA!=lenB)//长度不一致,高位补零操作
        zero_padding(lenA,lenB);
    len = max(lenA,lenB);
    int odd_even;//如果等于1,则是奇数;0为偶数位
    if (len%2==0)//判断第一位是什么位
        odd_even = 0;
    else
        odd_even = 1;
    for (i=0;i<len;i++)
    {
        if (odd_even==1)//奇数位
        {
            temp = (B[i]+A[i]-48*2)%13;
            switch (temp){
                case 10: temp = 'J'-48;break;
                case 11: temp = 'Q'-48;break;
                case 12: temp = 'K'-48;break;
                default: break;//J 代表 10、Q 代表 11、K 代表 12
            }
            printf("%c",(temp+48));
            odd_even = 0;
        }
        else
        {
            temp = B[i]-A[i];
            if (temp<0)
                temp += 10;
            printf("%d",temp);
            odd_even = 1;
        }
    }
    return 0;
}