C++ 代码:将普通减法改造为高精度减法,附详细代码及解释
```cpp #include <iostream> #include <string> using namespace std; // 比较两个大整数的大小 bool cmp(string a, string b) { if (a.length() != b.length()) { return a.length() < b.length(); } return a < b; } // 高精度减法 string subtract(string a, string b) { if (a == b) { return "0"; } bool isNegative = false; if (cmp(a, b)) { swap(a, b); isNegative = true; } string result; int borrow = 0; int i = a.length() - 1, j = b.length() - 1; while (i >= 0 || j >= 0 || borrow) { int x = i >= 0 ? a[i--] - '0' : 0; int y = j >= 0 ? b[j--] - '0' : 0; int diff = x - y - borrow; if (diff < 0) { diff += 10; borrow = 1; } else { borrow = 0; } result = to_string(diff) + result; } // 去除前导零 while (result.length() > 1 && result[0] == '0') { result = result.substr(1); } if (isNegative) { result = "-" + result; } return result; } int main() { string num1, num2; cin >> num1 >> num2; string result = subtract(num1, num2); cout << result << endl; return 0; } ``` 代码解释: 1. `cmp` 函数:用于比较两个大整数的大小。先比较长度,如果长度不同,长度短的数小;如果长度相同,则按字典序比较。 2. `subtract` 函数: - 首先判断两个数是否相等,若相等则直接返回 `"0"`。 - 若 `a` 小于 `b`,交换它们并标记结果为负数。 - 逐位相减,处理借位情况。 - 去除结果的前导零。 - 如果结果为负数,添加负号。 3. `main` 函数: - 读取两个大整数。 - 调用 `subtract` 函数进行减法运算。 - 输出结果。 ######[AI问答 | 601点数解答 | 2025-09-20 10:16:42]
- C++ 实现快递公司运费计算:根据重量与类型精准算出费用(字节豆包 | 480点数解答 | 2025-12-21 22:04:58)101
- C++ 实现根据重量与快递类型计算某快递公司运费(字节豆包 | 472点数解答 | 2025-12-27 20:39:33)40
- C++ 实现快递公司运费计算:根据重量与类型精准算费(字节豆包 | 385点数解答 | 2026-02-03 14:00:23)61
- C++ 实现快递公司运费计算程序(字节豆包 | 479点数解答 | 2026-02-13 22:32:35)20
- C++实现快递公司运费计算及开发建议(字节豆包 | 550点数解答 | 2026-03-27 22:07:41)19
- 缜密逻辑,全新无名杀“风餐”技能代码精心打造与深度解析 (字节豆包 | 469点数解答 | 2025-04-05 11:37:06)249
- 探寻数组中最长摆动子序列长度:思路剖析与代码优化(GPT | 758点数解答 | 2024-12-23 23:18:29)274
- 独家剖析:求解数组最长摆动子序列长度的代码实现与改进建议(GPT | 350点数解答 | 2024-12-23 23:20:54)271
- 求解 1 至 n 内第 k 大孤独数:质数与余数的巧妙探寻(字节豆包 | 298点数解答 | 2025-11-10 20:01:57)164
- 巧判小朋友同桌意愿:满足需求还是无解难题?(字节豆包 | 599点数解答 | 2025-11-16 20:06:12)74
- 巧用代码判断:能否让 2n 个小朋友都拥有满意同桌?(字节豆包 | 445点数解答 | 2025-11-16 20:07:02)84
- C 语言实现一元稀疏多项式 a=3x^14+2x^8+1 与 b=8x^14–3x^10+10x^6 的表示及基本操作(字节豆包 | 1615点数解答 | 2024-10-18 17:19:15)241