急!50分求一段C++程序!在线等!输入两个大的整数(40位以内),求它们的差并输出

来源:百度知道 编辑:UC知道 时间:2024/06/16 19:54:29
输入两个大的整数(40位以内),求它们的差并输出:

例如输入:

200000000000000000000000000000000

100000000000000000000000000000000

输出

100000000000000000000000000000000
要求贴代码 ;能不能代码再简单点

//高精度减法,应该还可以优化
//正数减正数、正数减负数、负数减正数、负数减负数、大数减小数、小数减大数都考虑到了
//请保证输入的数的合法性

#include<iostream>
using namespace std;

#define MAXSIZE 50

void minus(char *x1, char *x2)
{
int a[MAXSIZE], b[MAXSIZE], tmp[MAXSIZE], ans[MAXSIZE];
int l1, l2, i, st, p1=0, p2=0, pt, pm, pos;
bool m1, m2, chg;

for(i=0; i<MAXSIZE; i++)
a[i]=b[i]=tmp[i]=ans[i]=0;
m1=(x1[0]=='-');
m2=(x2[0]=='-');
if(!m1 && !m2) st=1;
else if(m1 && !m2) st=2;
else if(!m1 && m2) st=3;
else if(m1 && m2) st=4;

l1=strlen(x1);
if(m1) for(i=l1-1; i>=1; i--)
{
a[p1]=x1[i]-'0';
p1++;
}
else for(i=l1-1; i>=0; i--)
{
a[p1]=x1[i]-'0';
p1++;
}

l2=strlen(x2);
if(m2) for(i=l2-1; i>=1; i--)
{
b[p2]=x2[i]-'0';
p2++;
}
else for(i=l2-1; i>=0