c++高精度运算:输入两数求乘积。求大神帮忙看下出错在哪里,谢谢啦。
#include<bits/stdc++.h>
using namespace std;
int la[1010],lb[1010],lc[1010];
int main()
{
int i,j,k;
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(j=b.size();j>=0;j--)
{
lb[k]=b[i]-'0';
k++;
}
for(i=0;i<=a.size()-1;i++)
{
for(j=0;j<=b.size()-1;j++)
lc[i+j]=lc[i+j]+lc[i]*lc[j];
}
for(k=0;k<a.size()+b.size()-1;k++)
{
if(lc[k]>=10)
{
lc[k]=lc[k]%10;
lc[k+1]=lc[k+1]+lc[k]/10;
}
}
if(lc[a.size()+b.size()-1]==0){
for(k=a.size()+b.size()-2;k>=0;k--)
cout<<lc[k];
}
else{
for(k=a.size()+b.size()-1;k>=0;k--)
cout<<lc[k];
}
return 0;
}
都是粗心的小错
#include<bits/stdc++.h>
using namespace std;
int la[1010],lb[1010],lc[1010];
int main()
{
int i,j,k;
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(j=b.size()-1; j>=0; j--) //b.size()-1
{
lb[k]=b[j]-'0'; //这里是j
k++;
}
for(i=0; i<=a.size()-1; i++)
{
for(j=0; j<=b.size()-1; j++)
{
lc[i+j]=lc[i+j]+la[i]*lb[j]; //la[i]*lb[j]
}
}
for(k=0; k<a.size()+b.size()-1; k++)
{
if(lc[k]>=10)
{
lc[k]=lc[k]%10;
lc[k+1]=lc[k+1]+lc[k]/10;
}
}
if(lc[a.size()+b.size()-1]==0)
{
for(k=a.size()+b.size()-2; k>=0; k--)
cout<<lc[k];
}
else
{
for(k=a.size()+b.size()-1; k>=0; k--)
cout<<lc[k];
}
return 0;
}
上一篇:西安vb和单色哪个好?