输入输出的数据都是大数所以都用字符串类型表示。。。
代码:
#include <stdio.h>
#include <string.h>
void sub(char s1[],char s2[],char t[])
{
int i,l1,l2,k;
l2 = strlen(s2);
l1 = strlen(s1);
t[l1] = '\0';
l1--;
for(i = l2-1; i>=0; i--,l1--)
{
if(s1[l1]-s2[i]>=0)
t[l1] = s1[l1] - s2[i] + '0';
else
{
t[l1] = 10+s1[l1] - s2[i]+'0';
s1[l1-1]= s1[l1-1] -1;
}
}
k = l1;
while(s1[k]<0)
{
s1[k]+=10;
s1[k-1]-=1;
k--;
}
while(l1>=0)
{
t[l1] = s1[l1];
l1--;
}
loop:
if(t[0] == '0')
{
l1 = strlen(s1);
for(i = 0; i<l1-1; i++)
t[i] = t[i+1];
t[l1-1] = '\0';
goto loop;
}
if(strlen(t) == 0)
{
t[0] = '0';
t[1] = '\0';
}
}
int main()
{
char c[1000],t[1000],sum[1000];
int m;
while(~scanf("%s%s",c,t))
{
sub(c,t,sum);
printf("%s\n",sum);
}
return 0;
}