用的c语言,逻辑写的可能有点混乱,大佬们见谅
#include<stdio.h>
int max(int a, int b)
{
if (a > b)
return a;
else
return b;
}
int main()
{
//先来写a>b的情况
char s1[10100];
char s2[10100];
int a[10100]={0};
int b[10100]={0};
int c[10100]={0};
int d[10010] = { 0 };
int k = 0;//作为标准告知是否输出‘-’
scanf("%s%s", s1, s2);
int la = strlen(s1);
int lb = strlen(s2);
int i = 0;
for (i = 0; i < la; i++)
{
a[la - i] = s1[i]-'0';
d[la - i] = s1[i] - '0';
}
for (i = 0; i < lb; i++)
{
b[lb - i] = s2[i]-'0';
}
int lc = max(la, lb)+1;
for (i = 0; i < lc; i++)//判断a<b的情况
{
a[i] -= b[i];
if (a[i] < 0)
{
a[i + 1]--;
a[i] += 10;
}
}
if (a[lc] + 1 == 0)
lc--;
if (a[lc + 1] < 0)
{
k = 1;
for (i = 0; i <= lc; i++)
{
int z = 0;
z=d[i];
d[i] = b[i];
b[i] = z;
}
}
for (i = 1; i <=lc; i++)
{
if (d[i] < b[i])
{
d[i + 1]--;
d[i] += 10;
c[i] = d[i] - b[i];
}
else
c[i] = d[i] - b[i];
}
if (c[lc] == 0 && lc > 0)
lc--;
if (k == 0)
{
for (i = lc; i > 0; i--)
{
printf("%d", c[i]);
}
}
else
{
printf("-");
for (i = lc; i > 0; i--)
{
printf("%d", c[i]);
}
}
return 0;
}