大数减法

大数减法
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);
}

  

posted on 2015-05-12 12:01  JASONlee3  阅读(170)  评论(0编辑  收藏  举报

导航