高精度数算法 - - 加法

本文介绍了一种高精度加法算法的实现方法,通过模拟手算过程来处理超出基本数据类型长度的数据相加问题。文章详细展示了算法的C++代码实现,包括数据输入、处理及输出等关键步骤。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

基本数据类型 长度有限。所以大的数据被单独拿出来。

高精度算法就是模拟我们在纸上的运算。

 

我擦,跟百度上30行的代码比较,我的80行就是狗屎。。。。。

要死要死要死

我忘记了。。。。一个空间有剩余的int[]后面是自带补0的啊。。。。。。

 

还有平时没有注意到的三目运算符

length=(str1>str2)?str1:str2;

上代码

#include <iostream>
#include <cstring>
#define MAX 1001
using namespace std;
int main(void)
{
	int arr1[MAX]={0},arr2[MAX]={0};
	int length,i,length1,length2,t,dv = 0;
	char str[MAX];
	/*读入数据,并进行预处理(计算出数字位数,并方向存放)*/
	cin>>str;
	length1 = strlen(str);
	for(i=0; i<length1; ++i)
		arr1[i] = str[length1-1-i] - '0';
	cin>>str;
	length2 = strlen(str);
	for(i=0; i<length2; ++i)
		arr2[i] = str[length2-1-i] - '0';
	length = (length1>length2)?length1:length2;
	/*算法核心内容*/
	for(i=0; i<length; ++i)
	{
		t = arr1[i] + arr2[i] +dv;
		arr1[i] = t % 10;
		dv = t / 10;
	}
	if(dv != 0)	arr1[length++] = dv;
	/*结束*/
	for(i=0; i<length; ++i)
		cout<<arr1[length-1-i];
	return 0;
}


 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值