大数相加算法

1、题目:实现两个大数相加。
2、算法流程:
(1)大数可能超出任何一种整数类型,会引发溢出问题,所以用字符串的格式存储字符串a,b;
(2)获取字符串a的长度为aLen,字符串b的长度为bLen;
(3)比较aLen和bLen的大小,用maxLen保存更大值。
(4)创建数组aArr,大小为maxLen,保存字符串a每一位上的值,举例下图所示。


image.png

(5)创建数组bArr,大小为maxLen,保存字符串b每一位上的值,不够的补0,例如。


image.png

(6)创建数组sumArr,大小为maxLen,保存两数之和。
(7)创建一个整数用于保存两数相加的进位jin,初始化等于0,是因为两个数的个位数相加进位一定等于0。
(9)因为两数相加一般从个位开始,所以用sumArr[maxLen-1]保存(a的个位+b的个位的+进位)的和除以10的余数,获取进位jin=(a的个位+b的个位的+进位)的和除以10的整除数。具体如下所示:
image.png

(10)各对应的位数相加完之后,判断进位jin是否等于1,如果等于1则输出 cout <<"1";
然后从高位到低位输出sumArr的各位数。

3、具体代码如下所示:

#include 
#include 
using namespace std;
int main()
{
 char* a="11111111111111111111111111";
 char* b="91111111111111111111111111111111111";
 int aLen=strlen(a);
 int bLen=strlen(b);
 cout << "aLen="<

你可能感兴趣的:(大数相加算法)