c++数据结果,运用代码实现大整数的加法运算,整数10位以上
时间: 2024-10-19 14:13:25 浏览: 21
C++数据结构课设(大整数加法)
在C++中,处理大整数的加法运算通常采用字符串或者动态数组来存储,因为C++标准库并不直接支持任意大小的整数类型。这里我们使用字符数组(string)来模拟大整数,并通过循环逐位相加的方式来实现加法。
首先,我们需要定义两个函数:一个用于读取用户输入的大整数,另一个用于计算两个大整数的和。以下是简单的实现:
```cpp
#include <iostream>
#include <string>
// 函数用于将字符串转换成整数并返回
int stringToInt(const std::string& num) {
int result = 0;
for (char c : num) {
if (c >= '0' && c <= '9') {
result = result * 10 + (c - '0');
} else {
throw std::invalid_argument("Invalid input");
}
}
return result;
}
// 函数用于两个大整数的加法
std::string addLargeIntegers(const std::string& a, const std::string& b) {
std::string sum = "";
bool carry = false;
// 从右向左遍历,逐位相加
for (int i = a.size() - 1; i >= 0; --i) {
int digit_sum = a[i] - '0' + b[i] - '0';
if (carry) {
digit_sum += 1;
carry = false;
}
// 检查进位
if (digit_sum > 9) {
carry = true;
digit_sum -= 10;
}
sum.insert(0, 1, digit_sum + '0'); // 将数字加到sum的最前面
}
// 如果有余下的进位,需要追加一位
if (carry) {
sum.insert(0, 1, '1');
}
return sum;
}
int main() {
try {
std::string num1, num2;
std::cout << "Enter first large integer (up to 10 digits): ";
std::cin >> num1;
std::cout << "Enter second large integer (up to 10 digits): ";
std::cin >> num2;
int num1_int = stringToInt(num1);
int num2_int = stringToInt(num2);
std::string sum_str = addLargeIntegers(std::to_string(num1_int), std::to_string(num2_int));
std::cout << "Sum: " << sum_str << std::endl;
} catch (const std::invalid_argument& e) {
std::cerr << e.what() << '\n';
}
return 0;
}
```
阅读全文