这份代码90分,我怀疑是处理不了1 1这类结果为0的数据,希望各位大佬能指点几句我太弱了
#include <bits/stdc++.h>
using namespace std;
const int maxn=30000;
char a1[maxn],b1[maxn];
int a[maxn],b[maxn],s[maxn];
void jiao_huan(char a[],char b[])
{
char c[maxn];
for(int i=0;i<maxn;i++) c[i]=a[i];
for(int i=0;i<maxn;i++) a[i]=b[i];
for(int i=0;i<maxn;i++) b[i]=c[i];
printf("-");
}
void bi(char a[],char b[])
{
if(strlen(a)>strlen(b));
else if(strlen(a)<strlen(b)) jiao_huan(a,b);
else{
for(int i=0;i<strlen(a);i++)
{
if((a[i] -'0')>(b[i] -'0'));
else if((a[i] -'0')<(b[i] -'0'))jiao_huan(a,b);
}
}
}
int main()
{
scanf("%s%s",a1,b1);
memset(s,0,sizeof(s));
bi(a1,b1);
int sa=strlen(a1),sb=strlen(b1);
int max=sa>sb?sa:sb;
for(int i=0;i<sa;i++) a[sa - i - 1]=a1[i] - '0';
for(int i=0;i<sb;i++) b[sb-i-1]=b1[i] - '0';
for(int i=0;i<max;i++)
{
if(a[i]==-1)
{
a[i+1]--;
a[i]+=10;
}
if(a[i]<b[i])
{
a[i+1]--;
a[i]+=10;
}
s[i]=a[i]-b[i];
}
if(s[max-1]==0 && max-1>0) max--;
for(int i=max-1;i>=0;i--)
{
printf("%d",s[i]);
}
printf("\n");
return 0;
}