码迷,mamicode.com
首页 > 其他好文 > 详细

大数减法

时间:2015-05-12 13:26:48      阅读:89      评论:0      收藏:0      [点我收藏+]

标签:

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

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!