c++高精度运算:输入两数,求和。求看过程找问题,在线等,谢谢
#include<bits/stdc++.h>
using namespace std;
int la[1010],lb[1010],lc[1010],ld[1010];
int main()
{
int i,j,k,s;
string a,b;
cin>>a>>b;
k=0;
for(i=a.size()-1;i>=0;i--)
{
la[k]=a[i]-'0';
k++;
}
k=0;
for(i=b.size()-1;i>=0;i--)
{
lb[k]=a[i]-'0';
k++;
}
if(a.size()>b.size()) s=a.size();
for(i=0;i<s;i++)
{
ld[i]=la[i]+lb[i]+lc[i-1];
if(ld[i]>=10){
ld[i]=ld[i]-10;
lc[i]=lc[i]+1;
}
}
for(i=s-1;i>=0;i--)
cout<<ld[i];
}
程序有多个问题,改好的参考
#include<bits/stdc++.h>
using namespace std;
int la[1010],lb[1010],lc[1010],ld[1010];
int main()
{
int i,j,k,s;
string a,b;
cin>>a>>b;
k=0;
for(i=a.size()-1; i>=0; i--)
{
la[k]=a[i]-'0';
k++;
}
k=0;
for(i=b.size()-1; i>=0; i--)
{
lb[k]=b[i]-'0'; //是b[i]不是a[i]
k++;
}
if(a.size()>b.size())
s=a.size();
else
s=b.size(); //另一情况
for(i=0; i<=s; i++) //要进位的
{
ld[i]=la[i]+lb[i]+lc[i]; //不能是i-1,当i=0时,下标溢出了
if(ld[i]>=10)
{
ld[i]=ld[i]-10;
lc[i+1]=lc[i+1]+1; //上一位
}
}
if (ld[s]) //是否进位了
s++;
for(i=s-1; i>=0; i--)
cout<<ld[i];
cout << endl; //最后加个回车
return 0; //对应int main
}
下一篇:为什么易语言程序不能启动