noi 1.6一维数组 大整数加法 哪里错了

img

#include
using namespace std;
int main()
{
    int a[200],b[200],s[201];
    char ch;
    bool flag=true;
    int i=0,j=0,k,h,m,temp;
    while(cin.get(ch)){      //输入第一个数
        if(ch=='\n') break;
        a[i]=ch-48;
        i++;//i表示第一个数有多少位(包括前导0)
    }
    while(cin.get(ch)){        //输入第二个数
        if(ch=='\n') break;
        b[j]=ch-48;
        j++;//j表示第二个数有多少位(包括前导0)
    }
    for(k=0;k2;k++){  //将第一个数的各个位倒置
        temp=a[i-1-k]; 
        a[i-1-k]=a[k];
        a[k]=temp;
    }
    for(k=0;k2;k++){   //将第二个数的各个位倒置
        temp=b[j-1-k];
        b[j-1-k]=b[k];
        b[k]=temp;
    }
    if(i>j){                     //将两个数对应数位相加,但超过10先不进位
        for(k=0;k0;kj) m=i;        //判断两数之和没进位前一共有多少位
    else m=j;
    s[m]=0;
    for(k=0;k9){
            s[k+1]+=s[k]/10;
            s[k]=s[k]%10;
        }
    for(k=m;k>=0;k--)      //两数之和由高位向低位依次列出,不包含前导0
        if(flag&&s[k]==0);
        else{
            cout<0;
}