高精度减法------c++

 

 

高精度减法:
第一步:判断正负,如果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;
}

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值