c 语言大整数加法
时间: 2023-08-29 16:07:32 浏览: 155
c 语言求最小公倍数 最大公约数
C语言中的整数类型有一个范围,如果想要进行大整数的加法运算,需要使用字符串来存储数字,并且自己实现加法算法。
以下是一个简单的大整数加法的C语言代码实现:
```c
#include <stdio.h>
#include <string.h>
#define MAX_N 1000
void reverse(char *s) {
int len = strlen(s);
for (int i = 0, j = len - 1; i < j; i++, j--) {
char temp = s[i];
s[i] = s[j];
s[j] = temp;
}
}
int main() {
char a[MAX_N], b[MAX_N];
int c[MAX_N] = {0};
scanf("%s%s", a, b);
reverse(a);
reverse(b);
int len_a = strlen(a);
int len_b = strlen(b);
int len_c = 0;
for (int i = 0; i < len_a || i < len_b; i++) {
if (i < len_a) c[i] += a[i] - '0';
if (i < len_b) c[i] += b[i] - '0';
if (c[i] >= 10) {
c[i] -= 10;
c[i + 1]++;
}
if (c[i] != 0) len_c = i + 1;
}
if (len_c == 0) printf("0");
else {
for (int i = len_c - 1; i >= 0; i--)
printf("%d", c[i]);
}
return 0;
}
```
这个程序中,我们首先定义了一个`reverse`函数,用来将字符串翻转。接下来,我们用两个字符数组`a`和`b`来存储两个大整数,用`c`数组来存储它们的和。在输入完`a`和`b`之后,我们将它们翻转过来,这样方便后面从低位到高位进行加法运算。然后,我们分别计算`a`和`b`的每一位上的数字的和,并将结果存储到`c`数组中。需要注意的是,如果某一位上的数字和大于等于10,需要进位。最后,我们将`c`数组从高位到低位输出,就得到了两个大整数的和。
需要注意的是,这个程序中只能处理非负整数的加法,如果要处理负数的加法,需要在程序中进行一些修改。
阅读全文