不用algorithm實現上面代碼
时间: 2023-08-29 20:08:11 浏览: 28
好的,以下是不使用 `algorithm` 的 C++ 实现方式:
```cpp
#include <iostream>
#include <cstring>
using namespace std;
string add(string a, string b) {
int lena = a.length(), lenb = b.length();
if (lena < lenb) {
swap(a, b);
swap(lena, lenb);
}
int carry = 0;
string res = "";
int p = lena - 1, q = lenb - 1;
while (q >= 0) {
int sum = a[p] - '0' + b[q] - '0' + carry;
res += char(sum % 10 + '0');
carry = sum / 10;
p--;
q--;
}
while (p >= 0) {
int sum = a[p] - '0' + carry;
res += char(sum % 10 + '0');
carry = sum / 10;
p--;
}
if (carry) {
res += char(carry + '0');
}
reverse(res.begin(), res.end());
return res;
}
int main() {
string a, b;
cin >> a >> b;
string ans = add(a, b);
cout << ans << endl;
return 0;
}
```
这个版本的代码与前一个版本相比,主要区别在于使用了 `char` 类型来表示数字字符,而不是直接使用数字。在 C++ 中,我们可以将 `char` 类型的字符变量加上 `'0'` 来得到对应的数字字符。例如,`'0' + 5` 的结果是字符 `'5'`。因此,在计算时我们可以使用 `char` 类型来保存每一位的结果,并将其转换为对应的字符。
其他部分的逻辑与前一个版本相同,都是比较两个字符串的长度,从低位开始逐位相加,并记录进位 carry,最后将结果倒序输出。