大数减法模板只支持正数的大数减法并且被减数大于减数
#include <iostream>
#include <cstdlib>
#include <cstring>
#include <string>
using namespace std;
#define MAXN 100
char* Subtraction(string A, string B);
int main()
{
string num1, num2;
cin>>num1>>num2;
Subtraction(num1, num2);
return 0;
}
char* Subtraction(string A, string B)
{
int i,k;
int len1, len2;
int up;
int length;
len1 = A.length();
len2 = B.length();
int a[MAXN+4] ={0};
int b[MAXN+4] ={0};
int c[MAXN+4] ={0};
for(k=0,i=len1-1; i>=0; i--)
a[k++] = A[i]-'0';
for(k=0,i=len2-1; i>=0; i--)
b[k++] = B[i]-'0';
for(i=0,up=0; i<MAXN; i++)
{
c[i] = a[i]-b[i]-up;
if(c[i]<0)
{
c[i] += 10;
up=1;
}
else up = 0;
}
for(i=MAXN; i>=0; i--)
if(c[i]) break;
length = i+1;
cout<<length<<endl;
char* result = (char *)malloc((sizeof(char)*length));
for(i=length-1,k=0; i>=0; i--)
result[k++] = c[i]+ '0';
//测试输出
cout<<A<<" - "<<B<<" = ";
for(i=0; i<length; i++)
cout<<result[i];
cout<<endl;
return result;
}