大数减法
void Move(char a[]) //当结果第一位为零时,用此函数将有效位向前移动一位
{
int i,len,cnt=0;
len=strlen(a);
if(a[0]==‘0‘)
for(i=0;i<=len;i++)
a[i]=a[i+1];
}
void sub(char a[],char b[]) //差存放在a数组中
{
bool flag=0; //判断是否有借位
int len1,len2,sub1,sub2;
len1=strlen(a);len2=strlen(b);
while(len2>0) //当减数的长度大于0,从数组最后一位开始处理
{
sub1=a[len1-1]-‘0‘;
sub2=b[len2-1]-‘0‘;
if(flag)
sub1--;
flag=(sub1>=sub2?0:1);
if(flag)
sub1+=10;
a[len1-1]=(sub1-sub2)+‘0‘;
len1- -;
len2- -;
}
while(len1>0) //减数长度已为零,被减数长度不为0
{
Int sub=a[len1-1]-‘0‘;
if(flag)
{
sub--;
if(sub>=0)
{
a[len1-1]=sub+‘0‘;
flag=0;
}
else a[len1-1]=‘9‘;
}
len1- -;
}
Move(a);
}
原文:http://www.cnblogs.com/jasonlixuetao/p/4496948.html