大整数减法,高精度减法 2

#include<iostream>
#include<string>
using namespace std;
int main()
{
    string a,b,c;
    int carry;
    while(cin>>a>>b)
    {
       string ans;
       int flag=0;
        int i,j,k;
        int add1,add2,sum;
        i=a.size()-1;
        j=b.size()-1;
        k=i>j?i:j;
        if(i>j) ans=a; else ans=b;
        if(j>i||(j==i&&a<b))
        {
            c=b;
            b=a;
            a=c;
        }
     for(carry=0;k>=0;i--,j--,k--)
        {
            add1=i<0?0:a[i]-'0';
            add2=j<0?0:b[j]-'0';
            sum=add1-add2-carry<0?add1-add2-carry+10:add1-add2-carry;
            carry=add1-add2-carry<0?1:0;
            ans[k]=sum+'0';
        }
        int len=ans.length();
        for(int i=0;i<len;i++)
        {
            if(ans[i]!='0'||flag)
            {
                cout<<ans[i];
                flag=1;
            }
        }
        cout<<"\n";
    } 
    return 0;
}

猜你喜欢

转载自www.cnblogs.com/5t2y0/p/9268679.html