大数相减运算
											当结果为负数时,结果显示不正常,如何修改?
程序代码:#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;
}										
					
	


											
	    

	