高精度减法,数字大了就不对了,求大神帮忙看看哪里出问题了?
https://www.代码如下
#include<iostream>
#include<string>
#include<stdio.h>
using namespace std;
char a[10005],b[10005],c[10005],d[10005],s[10005],f;
int main()
{
int i=1,j=1,l,k,z;
do
{
a[i]=getchar();
c[i]=a[i];
i++;
}
while(a[i-1]!='\n');
do
{
b[j]=getchar();
d[j]=b[j];
j++;
}
while(b[j-1]!='\n');
l=i>j?i:j;
for(k=l-2;k>=1;k--)
{
if(a[k]>=b[k])
{
int x=a[k]-48;
int y=b[k]-48;
z=x-y;
s[k]=z+48;
}
else if(a[k]<b[k])
{
if(k!=1)
{
a[k-1]--;
a[k]+=10;
s[k]=a[k]-b[k]+48;
}
else
{
cout<<"-";
for(k=l-2;k>=1;k--)
{
if(d[k]>=c[k])
{
int x=d[k]-48;
int y=c[k]-48;
z=x-y;
s[k]=z+48;
}
else if(d[k]<c[k])
{
d[k-1]--;
d[k]+=10;
s[k]=d[k]-c[k]+48;
}
}
}
}
}
for(int m=1;m<=l-1;m++)
cout<<s[m];
return 0;
}