c++超长整数的加减运算
时间: 2023-07-06 08:41:58 浏览: 118
C++中可以使用string来存储超长整数,并且可以通过自定义函数实现加减运算。下面是一个简单的示例代码:
```c++
#include <iostream>
#include <string>
using namespace std;
string add(string num1, string num2) {
string result = ""; // 保存结果
int carry = 0; // 进位标志
int i = num1.size() - 1; // num1的最高位
int j = num2.size() - 1; // num2的最高位
while (i >= 0 || j >= 0 || carry > 0) {
int n1 = i >= 0 ? num1[i--] - '0' : 0;
int n2 = j >= 0 ? num2[j--] - '0' : 0;
int sum = n1 + n2 + carry;
carry = sum / 10;
result = to_string(sum % 10) + result;
}
return result;
}
string subtract(string num1, string num2) {
string result = ""; // 保存结果
int borrow = 0; // 借位标志
int i = num1.size() - 1; // num1的最高位
int j = num2.size() - 1; // num2的最高位
while (i >= 0 || j >= 0) {
int n1 = i >= 0 ? num1[i--] - '0' : 0;
int n2 = j >= 0 ? num2[j--] - '0' : 0;
int diff = n1 - n2 - borrow;
if (diff < 0) {
diff += 10;
borrow = 1;
} else {
borrow = 0;
}
result = to_string(diff) + result;
}
// 去掉前导0
while (result.size() > 1 && result[0] == '0') {
result.erase(0, 1);
}
return result;
}
int main() {
string num1 = "123456789012345678901234567890";
string num2 = "987654321098765432109876543210";
cout << add(num1, num2) << endl;
cout << subtract(num1, num2) << endl;
return 0;
}
```
上述代码实现了超长整数的加减运算,其中使用了string类型存储超长整数,利用循环逐位相加/相减并处理进/借位。需要注意的是,减法需要判断被减数是否小于减数,若小于则需要向高位借位。对于减法的结果,需要去掉前导0。
阅读全文