为什么第二个答案错了,求的是两者的和,使用字符数组转化为整形数组方法(题目限制)

#include
#include
using namespace std;
int main()
{
int p;

char ca[1000],cb[1000];

int ia[1001],ib[1001],cs[1001];
int i;
int n,m,t;
int k,l;
int x=1;
cin>>p;
while (p--)
{
cin>>ca;
cin>>cb;
n=strlen(ca);
m=strlen(cb);
//将字符数组值反向存入整形数组
for (i=0;i ia[n-i-1]=ca[i]-48;
for (i=0;i ib[m-i-1]=cb[i]-48;
//将两数组用0填充使其位数相等
if (n>=m)
{
ia[n]=0;
for (i=m;i<=n;i++)
ib[i]=0;
}
else
{
ib[m]=0;
for (i=n;i<=m;i++)
ia[i]=0;
}
t=n>=m?n:m; //求数组中个数较多的一个
l=0;
//计算求和
for (i=0;i {
k=ia[i]+ib[i];
cs[i]=(k+l);
l=(k+l)/10;
}
cout for (i=n-1;i>=0;i--)
cout< cout for (i=m-1;i>=0;i--)
cout< cout for (i=t;i>=0;i--)
{
if (i==t&&cs[i]==0) //如果和首位为零,不输出
continue;
cout<<cs[i];
}
if (p==0)
cout<<endl;
else
cout<<endl<<endl;
x++;
}
return 0;
}
图片说明


是这两句有问题:cs[i]=(k+l);l=(k+l)/10;cs[i]=(k+l);

 点击发表框工具栏上面的插入代码片,把代码放到代码片里,否则粘贴过来,容易出现错误,格式也很乱。

是这两句有问题:cs[i]=(k+l);l=(k+l)/10;因为当k+l>10的时候,cs[i]应取个位数,不应把十位1也取到,不然cs[i]就包含了两位数

if(k+l>=10){

 [    cs[i]=k+l-10;]( "")

}else{

 [    cs[i]=k+l;]( "")

}
```意思如此,不知道语法对不对}


for (i=0;i {

k=ia[i]+ib[i];
    if(k+l>=10){
    cs[i]=(k+l-10);
    }else{
        cs[i]=k+l; //这里的l和上一行的l都是上一次循环时保存的, 如果上一次的k+l大于10,将会在此加上1
    }
l=(k+l)/10;  //保存进位供下一次使用

}