写一个c++程序,实现超长整数的加减运算 只使用 iostream和cstring库
时间: 2024-03-13 22:44:26 浏览: 79
好的,下面是一个简单的实现:
```c++
#include <iostream>
#include <cstring>
using namespace std;
const int MAXN = 1005;
int a[MAXN], b[MAXN], c[MAXN];
void init(char s[], int num[]) {
int len = strlen(s);
for(int i = 0; i < len; i++) {
num[i] = s[len - i - 1] - '0';
}
}
void print(int num[]) {
int i = MAXN - 1;
while(i > 0 && num[i] == 0) i--;
for(; i >= 0; i--) {
cout << num[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() {
char s1[MAXN], s2[MAXN];
cin >> s1 >> s2;
init(s1, a);
init(s2, b);
add(a, b, c);
print(c);
sub(a, b, c);
print(c);
return 0;
}
```
这个程序中,我们定义了三个数组 `a`、`b`、`c`,分别表示两个加数和一个和或差。在 `init` 函数中,我们将输入的字符数组转化为整型数组。在 `print` 函数中,我们将整型数组转化为字符数组并输出。
在 `add` 和 `sub` 函数中,我们分别实现了加法和减法。这里采用了和竖式计算类似的方法,从低位开始逐位相加或相减,并考虑进位或借位。
阅读全文