用整型数组表示10进制大整数(超过2^32的整数),数组的每个元素存储大整数的一位数字,实现大整数的加减法。c++,用户自己输入数据
时间: 2024-03-18 22:40:05 浏览: 179
c++实现的任意大整数类,是c++新手练手的良好材料 定义可处理任意大的正整数类LongLongInt,用一个动态字符数组存放任
5星 · 资源好评率100%
好的,我可以帮你实现这个功能。以下是C++代码示例:
```C++
#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
// 大整数加法
vector<int> add(vector<int>& a, vector<int>& b) {
vector<int> res;
int carry = 0;
for (int i = 0; i < max(a.size(), b.size()); i++) {
if (i < a.size()) carry += a[i];
if (i < b.size()) carry += b[i];
res.push_back(carry % 10);
carry /= 10;
}
if (carry) res.push_back(carry);
return res;
}
// 大整数减法
vector<int> sub(vector<int>& a, vector<int>& b) {
vector<int> res;
int carry = 0;
for (int i = 0; i < a.size(); i++) {
int t = a[i] - carry;
if (i < b.size()) t -= b[i];
if (t < 0) {
t += 10;
carry = 1;
} else {
carry = 0;
}
res.push_back(t);
}
while (res.size() > 1 && res.back() == 0) res.pop_back();
return res;
}
// 输出大整数
void print(vector<int>& a) {
for (int i = a.size() - 1; i >= 0; i--) {
cout << a[i];
}
cout << endl;
}
int main() {
// 用户输入两个大整数
string s1, s2;
cin >> s1 >> s2;
// 将字符串转换为整型数组
vector<int> a, b;
for (int i = s1.size() - 1; i >= 0; i--) {
a.push_back(s1[i] - '0');
}
for (int i = s2.size() - 1; i >= 0; i--) {
b.push_back(s2[i] - '0');
}
// 计算加法和减法
vector<int> sum = add(a, b);
vector<int> diff = sub(a, b);
// 输出结果
cout << "sum: ";
print(sum);
cout << "diff: ";
print(diff);
return 0;
}
```
在这个程序中,我们定义了两个函数 `add` 和 `sub` 分别实现大整数的加法和减法。这两个函数都接受两个参数,分别是存储大整数的整型数组 `a` 和 `b`。函数的返回值是一个新的整型数组,存储计算结果。
在 `main` 函数中,我们首先读入用户输入的两个大整数,然后将它们转换为整型数组 `a` 和 `b`。接下来,我们调用 `add` 和 `sub` 函数计算加法和减法的结果,最后输出结果。
希望这个程序能够帮助到你!
阅读全文