大数相减运算
当结果为负数时,结果显示不正常,如何修改?
程序代码:#include<stdio.h>
#include<string.h>
#include<math.h>
#define M 10005
int main()
{
char a[M],b[M];
int a1[M],b1[M],i,j,m,n,k,max;
scanf("%s%s",&a,&b);
m=strlen(a);
n=strlen(b);
max=m;
if(max<n)
max=n; //选出最大位数是多少位
k=max;
for(i=0;i<m;i++) //将字符串转换为数组
a1[i]=a[m-1-i]-'0';
for(j=0;j<n;j++)
b1[j]=b[n-1-j]-'0';
i=0;
if(k==m)
{
for(j=0;j<k;j++)
{
if(a1[i]<b1[j])
{
a1[i]=a1[i]-b1[j]+10;
a1[i+1]--;
i++;
}
else
{
a1[i]=a1[i]-b1[j];
i++;
}
}
i=k;
while(a1[i]==0)
i--;
if(i<0)
printf("0\n");
else
{
for(;i>=0;i--)
printf("%d",a1[i]);
}
}
else
{
for(j=0;j<k;j++)
{
if(b1[i]<a1[j])
{
b1[i]=b1[i]-a1[j]+10;
b1[i+1]--;
i++;
}
else
{
b1[i]=b1[i]-a1[j];
i++;
}
}
i=k;
while(b1[i]==0)
i--;
if(i<0)
printf("0\n");
else
{
for(;i>=0;i--)
printf("-%d",b1[i]);
}
}
return 0;
}



