大數減法(a,b>0)

#include<bits/stdc++.h>
using namespace std;
char a[350],b[350];
int len1,len2;
int c[305],d[350];
void jian(int a[],int b[])
{
int len3=max(len1,len2);
for(int i=0; i<len3; i++)
{
c[i]-=d[i];
if(c[i]<0)
{
c[i]+=10;
c[i+1]–;
}
}
while(a[len3-1]==0&&len3>1)
len3–;
for(int i=len3-1; i>=0; i–)
printf("%d",c[i]);
printf("\n");
}
int main()
{

cin>>a>>b;
len1=strlen(a);
len2=strlen(b);
memset(c,0,sizeof(c));
memset(d,0,sizeof(d));
if(strcmp(a,b) > 0&&len1==len2||len1>len2)
{
    for(int i=len1-1; i>=0; i--)
    {
        c[len1-i-1]=a[i]-'0';
    }
    for(int i=len2-1; i>=0; i--)
    {
        d[len2-i-1]=b[i]-'0';
    }
    jian(c,d);
}
else
{
    if(strcmp(a,b) < 0&&len1==len2||len1<len2)
    {
        cout<<"-";
        for(int i=len2-1; i>=0; i--)
        {
            c[len2-i-1]=b[i]-'0';
        }
        for(int i=len1-1; i>=0; i--)
        {
            d[len1-i-1]=a[i]-'0';
        }
        jian(c,d);
    }
    else
    {
        if(strcmp(a,b)==0)
        {
            cout<<"0"<<endl;
            return 0;
        }
    }
}
return 0;

}

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章