大数减法 C语言

关于大数减法其核心就是:减法的算法也是从低位开始减,先要判断减数和被减数那一个位数长,被减数位数长是正常减;减数位数长,则减数-被减数,最后还要加上负号;两个位数长度相等时,最好比较哪一个数大,否则负号会处理的很繁琐;处理每一项时,要先按对应的位用被减数减去减数,用数组存入,如果差小0,需要向上一位借位,再把这一位的差加10,以此类推。

代码如下:

//大数减法
#include
#include
#define M 100005
using namespace std;
char s1[M],s2[M],s[M];
int  a[M],b[M],c[M];
/*较大数减去较小数,即正常减*/
void ss(char s1[],char s2[],int n,int m)
{
    int i,j,a[M],b[M];
    for(i=0; im)
            ss(s1,s2,n,m);
        else if(n0则s1较大,k<0则s2较大,k=0则s1=s2*/  
            if(k==0)
            {
                printf("0\n");
                continue;
            }
            else if(k>0)
                ss(s1,s2,n,m);
            else
            {
                printf("-");
                ss(s2,s1,m,n);
            }
        }
        if(n>m) kk=n;
        else kk=m;
        while(c[kk]==0) kk--;//排除前导0
        for(i=kk; i>=0; i--)
            printf("%d",c[i]);
        printf("\n");
    }
    return 0;
}


你可能感兴趣的:(#,算法知识点归纳,算法)