用整型数组表示10进制大整数(超过2^32的整数),数组的每个元素存储大整数的一位数字,实现大整数的加减法。
时间: 2024-01-22 16:20:41 浏览: 32
以下是用整型数组表示10进制大整数的加减法的示例代码:
```c++
#include <iostream>
#include <cstring>
using namespace std;
const int MAXN = 1005;
int a[MAXN], b[MAXN], c[MAXN];
void init() {
memset(a, 0, sizeof(a));
memset(b, 0, sizeof(b));
memset(c, 0, sizeof(c));
}
void read(int a[]) {
char s[MAXN];
cin >> s;
int len = strlen(s);
for (int i = 0; i < len; ++i) {
a[len - i] = s[i] - '0';
}
}
void print(int c[]) {
int i = MAXN - 1;
while (i > 0 && c[i] == 0) --i;
for (; i >= 0; --i) {
cout << c[i];
}
cout << endl;
}
void add(int a[], int b[], int c[]) {
int carry = 0;
for (int i = 0; i < MAXN; ++i) {
c[i] = a[i] + b[i] + carry;
carry = c[i] / 10;
c[i] %= 10;
}
}
void sub(int a[], int b[], int c[]) {
int borrow = 0;
for (int i = 0; i < MAXN; ++i) {
c[i] = a[i] - b[i] - borrow;
if (c[i] < 0) {
c[i] += 10;
borrow = 1;
} else {
borrow = 0;
}
}
}
int main() {
init();
read(a);
read(b);
add(a, b, c);
cout << "a + b = ";
print(c);
sub(a, b, c);
cout << "a - b = ";
print(c);
return 0;
}
```
其中,我们使用 `MAXN` 来表示数组的最大长度。在 `read()` 函数中,我们读入一个字符串并将每一位数字存入整型数组中。在 `add()` 和 `sub()` 函数中,我们分别实现了加法和减法。在输出结果时,我们需要注意去掉前导零。