C语言实现两个大整数相加
大家都知道,long long int的范围最大存储(9223372036854775807)可以大约记忆为92后面跟17个0,共19位数。
超过long long int范围的数怎么运算?
话不多话看代码
99+99 = 198 位数是3
999+99 = 1098 位数是4
11+22 = 33 位数是2
当最高位有进位时,和的长度= 两个加数中较长的加数的长度+1
当最高位没有进位时,和的长度 = 两个加数中较长的加数的长度
只需要判断两个加数的最高位有没有进位,就能确定和的长度了
我的做法是把两个数,放到字符数组中,然后反转一下,
数的高位在数组后面的位置,低位在数组前面位置。
这样下标从0往上加有进位就加到下一位上,这样,递推就出来了。最后输出和的时候倒着输出就可以了。
#include<cstdio>
#include<iostream>
#include<cstring>
#include<cmath>
#include<algorithm>
#define pf printf
#define sf scanf
#define pc putchar
using namespace std;
char add1[10000],add2[10000],sum[10000];
int add1len,add2len,sumlen;
void calculater(){
int carry