2 chenyonken chenyonken 于 2016.02.01 18:19 提问

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

#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;
}
图片说明


5个回答

qq_27183003
qq_27183003   Ds   Rxr 2016.02.01 18:49
 点击发表框工具栏上面的插入代码片,把代码放到代码片里,否则粘贴过来,容易出现错误,格式也很乱。
xctu_lmt
xctu_lmt   2016.02.01 18:47
xctu_lmt
xctu_lmt   2016.02.01 18:51
chenyonken
chenyonken 我想不出怎么改这两句啊
接近 2 年之前 回复
xctu_lmt
xctu_lmt   2016.02.01 21:58

if(k+l>=10){

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

}else{

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

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


chenyonken
chenyonken 这样后面的数怎么在前面的数大过10时加1啊
接近 2 年之前 回复
xctu_lmt
xctu_lmt   2016.02.02 19:05

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;  //保存进位供下一次使用

}


Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!