杭电OJ1002,报Runtime Error (ACCESS_VIOLATION),哪位能帮我看一下吗,实在不知道哪里出问题了

#include
#include
#include
#include
using namespace std;

int main(){

int i,k,x,n,j = 0,y,t = 1;
char a[2000],b[2000];

cin>>n;
while(n--){
    cin>>a;
    cin>>b;
    
    k = strlen(a);
    x = strlen(b);
    cout<<"Case "<":"<" + "<" = ";
    y = k;
    
    for(i = k-1;x > 0;i--){
        
        a[i] += b[x-1] - 48;
        while(a[i-j]  > 57){        //101
         
            if(i-j == 0){            //如果是第一位大于10了,说明要进1位,开辟一个新的位置 
                while(y > 0){
                    a[y] = a[y-1];    //右移 
                    y--;
                }
                
                a[y+1] -= 10;        //第二位为相加后的那个数的个位数 
                a[y] = '1';            //进位后第一位必是1 
                j--;                //因为数字右移了,所以计数器要和i的值****相持平,满足i-j==0,继续判断第1位是否需要再次进位 
                continue;            //跳过下面代码,轮下一个循环 
            }
             
            a[i-j] -= 10;            //相当于减去一个10 
            a[i-1-j] += 1;            //ASCLL码加1
            j++;                    //继续往前寻找,看看有没有还要进位的数字 
            
        }
        x--;                        //准备下一轮的数字相加 
        j=0;                        //重置寻找计数器 
    }
    
    cout<0;

}

我简单试了一下 没问题啊 可以运行 当然 我没关注具体代码细节功能
这里你在输入的时候 要关注你源码中设置的输入相关格式才能正确的

img