用c++语言实现长整数加法运算并且写出注释
时间: 2024-02-17 19:03:34 浏览: 100
C/C++:任意长的整数加法.rar(含完整注释)
5星 · 资源好评率100%
下面是用 C++ 实现长整数加法运算的代码,同时添加了注释:
```C++
#include <iostream>
#include <string>
using namespace std;
string addStrings(string num1, string num2) {
string res; // 定义结果字符串
int carry = 0; // 定义进位,初值为 0
int i = num1.size() - 1, j = num2.size() - 1; // 分别从 num1 和 num2 的最低位开始加
while (i >= 0 || j >= 0) { // 只要有一方还没加完,就继续加
int n1 = i >= 0 ? num1[i] - '0' : 0; // 如果 num1 还没加完,就取出当前位的数字
int n2 = j >= 0 ? num2[j] - '0' : 0; // 如果 num2 还没加完,就取出当前位的数字
int temp_sum = n1 + n2 + carry; // 计算 num1 和 num2 当前位的和以及进位
carry = temp_sum / 10; // 计算新的进位
res.push_back(temp_sum % 10 + '0'); // 将当前位的结果加到结果字符串中
i--; // 继续处理 num1 的下一位
j--; // 继续处理 num2 的下一位
}
if (carry) { // 如果最高位有进位,就需要加上去
res.push_back('1');
}
reverse(res.begin(), res.end()); // 将结果字符串翻转过来
return res; // 返回结果
}
int main() {
string num1, num2;
cout << "请输入两个长整数:" << endl;
cin >> num1 >> num2;
string sum = addStrings(num1, num2);
cout << "它们的和是:" << sum << endl;
return 0;
}
```
这个算法的时间复杂度是 $O(n)$,其中 $n$ 是两个长整数中位数较长的那个数的位数。
阅读全文