本文最后更新于-1天前,其中的信息可能已经过时,如有错误请发送邮件到2392862431@qq.com
基本思想:
把除数与被除数存储在两个数组或是容器内,在进行减法前进行大小判断,如果A>B,直接进行减法,反之交换A,B,在最后输出结果前加上减号即可,最后进行加减法的运算,最后输出结果。
实现过程:
1、对除数与被除数以及结果进行预处理(也就是存入容器内),输出读入等模板框架。
2、用一个bool型的判断A是否大于B的函数进行判断,结果为真则调用A-B,反之B-A(但最后的结果要加负号)。
3、实现减法函数。
代码实现:
1、框架处理:
string a,b;
cin>>a>>b;
vector<int> A,B,C;
for(int i=a.size()-1;i>=0;i--)
{
A.push_back(a[i]-'0'); //易错点:记住要把字符xii'n
}
for(int i=b.size();i>=0;i--)
{
B.push_back(b[i]-'0');
}
if(cmp(A,B))
C=sub(A,B);
else
{
C=sub(B,A);
cout<<'-';
}
for(int i=C.size();i>=0;i--)
cout<<C[i];
cout<<endl;
return 0;
2、判断A是否大于B
bool cmp(vector<int>&A,vector<int>&B)
{
if(A.size()!=B.size())
return A.size()>B.size();
for(int i=A.size()-1;i>=0;i--)
{
if(A[i]!=B[i])
return A[i]>B[i];
}
return true;
}
3、减法函数的实现
vector <int>sub(vector<int>&A,vector<int>&B)
{
vector<int>C;
for(int i=0,t=0;i<A.size();i++)
{
t=A[i]-t;
if(i<B.size())
t=t-B[i];
C.push_back((t+10)%10);
if(t<0)
t=1;
else
t=0;
}
while(C.size()>1&&C.back()==0) //前导零的去除
C.pop_back();
return
}









