c++1. 实现和不超过100位的超长整数加法。从键盘输入任意两个不超过100位的十进制超长整数(和不超过100位),输出相加的结果。 提示:用数组存储两个长整数,模拟竖式加法,可考虑联合使用整除“/”和求余“%”实现进位加。
时间: 2024-03-09 11:48:25 浏览: 29
好的,这是一个关于超长整数加法的问题。我可以为您提供一种C++的实现方法。
思路:
我们可以将两个长整数按位存储在两个数组中,对应位相加,若和大于等于10,则将进位保存到下一位相加时使用。最终将两个数组相加得到结果。
代码实现:
示例代码如下:
```c++
#include <iostream>
#include <cstring>
#include <algorithm>
using namespace std;
const int MAXN = 105;
int a[MAXN], b[MAXN], c[MAXN];
int main() {
string s1, s2;
cin >> s1 >> s2;
int len1 = s1.length(), len2 = s2.length();
// 将两个长整数按位存储在数组中
for (int i = 0; i < len1; i++) {
a[i] = s1[len1 - 1 - i] - '0';
}
for (int i = 0; i < len2; i++) {
b[i] = s2[len2 - 1 - i] - '0';
}
// 高精度加法
int len = max(len1, len2);
for (int i = 0; i < len; i++) {
c[i] += a[i] + b[i];
if (c[i] >= 10) {
c[i] -= 10;
c[i + 1]++;
}
}
if (c[len] > 0) len++;
// 输出结果
for (int i = len - 1; i >= 0; i--) {
cout << c[i];
}
cout << endl;
return 0;
}
```
注意事项:
1. 数组的长度应该设置为长度最大的长整数加1,以防止出现进位导致数组越界的情况。
2. 在输入长整数时,应该将字符串反转后按位存储在数组中,方便后续计算。
希望这个实现方法可以解决您的问题。