高精度减法:
第一步:判断正负,如果s1比s2对应的整数小,结果为负,交换s1
第二步:将两个字符串,逆序存入2个整数输出测试
第三步:从左至右,逐位相减,不够借位
第四步:从右向左,逆序输出
真的是烦啊,该死的文章质量提示哦,气死了气死了
上代码:
#include <bits/stdc++.h>
using namespace std;
#define LENGTH 1000+1
int main(void)
{
string fh;
//用string类
string s1,s2;
cin >> s1 >> s2;
//比较大小,把大的换给s1
if(s1.size()<s2.size()||((s1.size()==s2.size())&&(s1<s2)))
{
//交换,c++真方便呐,啊哈
swap(s1,s2);
//说明是负的
fh = '-';
}
if(fh=="-")
cout << fh;
//打印看看对不对,cout <<s1<<endl<<s2;
//然后逆序存入整型数组
int num1[LENGTH] = {0};
int num2[LENGTH] = {0};
int jg[LENGTH] = {0};
int j;
for(j = 0;j < s1.size();j++)
{
num1[j] = s1[s1.size()-j-1]-'0';
}
for(j = 0;j < s2.size();j++)
{
num2[j] = s2[s2.size()-j-1]-'0';
}
//找到最大长度
int maxlen = s1.size()>s2.size()?s1.size():s2.size();
//然后就可以相减了
//定义一个结果数组
int i;
for (i = 0;i < maxlen;i++)
{
if(num1[i] < num2[i])
{
num1[i]+=10;
num1[i+1]-=1;
}
jg[i] = num1[i] - num2[i];
}
//逆序输出jg数组
int p = 0;
for(i = maxlen-1;i>=0;i--)
{
if(jg[i]!=0)
{
p = i;
break;
}
}
for(i = p;i>=0;i--)
{
cout<<jg[i];
}
return 0;
}