C/C++高精度四则运算模板

本文介绍了如何使用C/C++实现高精度的加、减、乘、除运算,通过模拟小学算术方法,从低位到高位逐位进行计算,并提供了模板代码和简单注释。详细解析和减法、乘法、除法的实现思路将在后续补充。
摘要由CSDN通过智能技术生成

1.高精度加高精度(加法)

模拟小学算式
1 4 7
+ 6 5
2 1 2
现在模拟这个算式即可从低位到高位每一位相加
7 + 5 = 12 这一位应该为2, 而进位则为12 / 10 = 1
4 + 6 + 1 = 11 这一位为1,而进位则为11 / 10 = 1;
1 + 0 + 1 = 2 这一位为2
直接给模板代码,给出一定注释,因为时间原因,暂时解析后补。

/*
高精度加法模板,结构体实现 
*/
#include <bits/stdc++.h>
using namespace std;

struct bign{
   
   int d[1000];//大整数存放 
   int len;	//大整数的长度 
   bign() {
   
   	memset(d, 0, sizeof(d));
   	len = 0;
   }
};

bign change(char str[]) {
   	//将整数转换成结构体存储 
   bign a;
   a.len = strlen(str);
   for (int i = 0; i < a.len; i++) {
   
   	a.d[i] = str[a.len - i - 1] - '0';
   }
   return a;
}

bign add(bign a, bign b) {
   
   bign c;
   int carry = 0;  //进位
   for (int i = 0; i < a.len || i < b.len; i++) {
   	//以较长的为界限 
   	int temp = a.d[i] + b.d[i] + carry;	//两个对应位与进位相加 
   	c.d[c.len++] = temp % 10;	//个位数为该进位的结果 
   	carry = temp / 10;	//十位数为新的进位 
   } 
   if (carry != 0) {
   
   	c.d[c.len++] = carry;
   }
   return c;
}

void print(bign a) {
   
   for (int i = a.len - 1; i >= 0; i--) {
   
   	printf("%d", a.d[i]);
   
评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值