我们知道无论是int还是long long,对于整数的大小都是很有限的。为了实现 大整数的相加,我们可以考虑使用数组来处理。输入格式: 两个不超过50位的正整数 输出格式: 所输入的2个正整数的和。使用c++
时间: 2024-12-08 21:16:17 浏览: 23
在C++中,要实现大整数的相加,通常采用动态内存分配和字符数组(string)来存储每一位数字,因为标准库中的`<iostream>`和`<limits>`定义的整数类型如`int`和`long long`都有它们自身的限制。这里是一个简单的示例,展示了如何处理不超过50位的正整数相加:
```cpp
#include <iostream>
#include <string>
std::string addBigNumbers(const std::string& num1, const std::string& num2) {
std::string result;
bool carry = false; // 进位标志
// 从右向左遍历每一位
for (int i = num1.size() - 1, j = num2.size() - 1; i >= 0 || j >= 0; --i, --j) {
int digit1 = i >= 0 ? num1[i] - '0' : 0; // 获取num1的当前位(如果越界则为0)
int digit2 = j >= 0 ? num2[j] - '0' : 0; // 获取num2的当前位(如果越界则为0)
// 当前位相加并考虑进位
int sum = digit1 + digit2 + carry;
result.insert(0, std::to_string(sum % 10)); // 把当前位添加到结果前面
carry = sum / 10; // 更新进位标志
}
// 如果有剩余的进位,则在结果最左边添加一位
if (carry) {
result.insert(0, "1");
}
return result;
}
int main() {
std::string num1, num2;
std::cout << "请输入第一个整数: ";
std::cin >> num1;
std::cout << "请输入第二个整数: ";
std::cin >> num2;
std::string sum = addBigNumbers(num1, num2);
std::cout << "两数之和: " << sum << std::endl;
return 0;
}
```
阅读全文