C++高精度加法,在反转a,b两个数的函数rever1和rever2中,只要数字位数一高就会运行错误。这是为什么? 5
#include<bits/stdc++.h>usingnamespacestd;stringa,b;longlongl,c[600]={0};voidrever1(){...
#include<bits/stdc++.h>
using namespace std;
string a,b;
long long l, c[600]={0};
void rever1()
{
string temp;
int la;
int i;
la=a.size();
for (i=0;i<=la-1;i++)
{
temp[i]=a[la-1-i];
}
for (i=0;i<=la-1;i++)
{
a[i]=temp[i];
}
}
void rever2()
{
string temp;
int lb;
int i;
lb=b.size();
for (i=0;i<=lb-1;i++)
{
temp[i]=b[lb-1-i];
}
for (i=0;i<=lb-1;i++)
{
b[i]=temp[i];
}
}
void addtogether(string x, string y)
{
int lx,ly,i;
lx=x.size();
ly=y.size();
if (lx>ly)
l=lx;
else
l=ly;
for (i=0;i<=l;i++)
{
if (i>ly-1) y[i]='0';
if (i>lx-1) x[i]='0';
c[i]=c[i]+x[i]+y[i]-96;
if (c[i]>=10)
{
c[i+1]++;
c[i]=c[i]%10;
if (c[l+1]>0) l++;
}
}
}
void ans()
{
int i;
for (i=l-1;i>=0;i--)
{
cout<<c[i];
}
}
int main()
{
cin>>a>>b;
rever1();
rever2();
addtogether(a,b);
ans();
} 展开
using namespace std;
string a,b;
long long l, c[600]={0};
void rever1()
{
string temp;
int la;
int i;
la=a.size();
for (i=0;i<=la-1;i++)
{
temp[i]=a[la-1-i];
}
for (i=0;i<=la-1;i++)
{
a[i]=temp[i];
}
}
void rever2()
{
string temp;
int lb;
int i;
lb=b.size();
for (i=0;i<=lb-1;i++)
{
temp[i]=b[lb-1-i];
}
for (i=0;i<=lb-1;i++)
{
b[i]=temp[i];
}
}
void addtogether(string x, string y)
{
int lx,ly,i;
lx=x.size();
ly=y.size();
if (lx>ly)
l=lx;
else
l=ly;
for (i=0;i<=l;i++)
{
if (i>ly-1) y[i]='0';
if (i>lx-1) x[i]='0';
c[i]=c[i]+x[i]+y[i]-96;
if (c[i]>=10)
{
c[i+1]++;
c[i]=c[i]%10;
if (c[l+1]>0) l++;
}
}
}
void ans()
{
int i;
for (i=l-1;i>=0;i--)
{
cout<<c[i];
}
}
int main()
{
cin>>a>>b;
rever1();
rever2();
addtogether(a,b);
ans();
} 展开
展开全部
修复好了。
#include<bits/stdc++.h>
using namespace std;
string a,b;
long long l, c[600]= {0};
void rever1()
{
string temp(a);
int la;
int i;
la=a.size();
for (i=0; i<=la-1; i++)
{
a[i]=temp[la-1-i];
}
}
void rever2()
{
string temp(b);
int lb;
int i;
lb=b.size();
for (i=0; i<=lb-1; i++)
{
b[i]=temp[lb-1-i];
}
}
void addtogether(string x, string y)
{
int lx,ly,i;
lx=x.size();
ly=y.size();
if (lx>ly)
l=lx;
else
l=ly;
for (i=0; i<=l; i++)
{
if (i>ly-1) y[i]='0';
if (i>lx-1) x[i]='0';
c[i]=c[i]+x[i]+y[i]-96;
if (c[i]>=10)
{
c[i+1]++;
c[i]=c[i]%10;
if (c[l+1]>0) l++;
}
}
}
void ans()
{
int i;
for (i=l-1; i>=0; i--)
{
cout<<c[i];
}
}
int main()
{
cin>>a>>b;
rever1();
rever2();
addtogether(a,b);
ans();
}
追问
所以问题是出在哪里呢,为什么之前的写法会运行错误?
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询