C++ 大整数加法
功能
输入两个大整数(100位以内),将结果输出
测试用例1
请输入一个大整数A:111111111
请输入一个大整数B:00005
结果:111111116
请按任意键继续. . .
测试用例2
代码
理论上,位数可以无限,实际使用时受内存空间的限制,数组不能过大(10000+可能会产生段错误)
#include<iostream>
#include<string>
using namespace std;
int main()
{
int A[100] = { 0 };
int B[100] = { 0 };
int jin[101] = { 0 };
int res[101] = { 0 };
//输入
string strA;
string strB;
cout << "请输入一个大整数A:";
cin >> strA;
cout << "请输入一个大整数B:";
cin >> strB;
//分离每一位
int maxLength = strA.length() > strB.length() ? strA.length() : strB.length();
int i;
//A
for (i = 0; i < strA.length(); i++)
{
A[strA.length() - i - 1] = (int)(strA[i] - '0');
}
//B
for (i = 0; i < strB.length(); i++)
{
B[strB.length() - i - 1] = (int)(strB[i] - '0');
}
//相加
for (i = 0; i <= maxLength; i++)
{
res[i] = (A[i] + B[i] + jin[i]) % 10; //当前位结果
jin[i + 1] = (A[i] + B[i] + jin[i]) / 10; //下一位进位
}
//输出
cout << "结果:";
if (res[maxLength] != 0)cout << res[maxLength];//是否输出最高位
for (i = maxLength - 1; i >= 0; i--)
{
cout << res[i];
}
cout << endl;
system("pause");
}