用c语言写一个高精度加法的程序
时间: 2023-10-20 09:07:35 浏览: 86
以下是一个用 C 语言实现的高精度加法程序:
```c
#include <stdio.h>
#include <string.h>
#define MAX_LEN 1000
int main() {
char a[MAX_LEN], b[MAX_LEN], c[MAX_LEN];
int la[MAX_LEN], lb[MAX_LEN], lc[MAX_LEN];
int la_len, lb_len, lc_len, carry;
int i, j;
// 获取输入
printf("请输入第一个加数:");
scanf("%s", a);
printf("请输入第二个加数:");
scanf("%s", b);
// 初始化
memset(la, 0, sizeof(la));
memset(lb, 0, sizeof(lb));
memset(lc, 0, sizeof(lc));
la_len = strlen(a);
lb_len = strlen(b);
carry = 0;
// 将 a 转化为数组 la
for (i = la_len - 1, j = 0; i >= 0; i--, j++) {
la[j] = a[i] - '0';
}
// 将 b 转化为数组 lb
for (i = lb_len - 1, j = 0; i >= 0; i--, j++) {
lb[j] = b[i] - '0';
}
// 执行加法
lc_len = (la_len > lb_len ? la_len : lb_len);
for (i = 0; i < lc_len; i++) {
lc[i] = la[i] + lb[i] + carry;
carry = lc[i] / 10;
lc[i] %= 10;
}
if (carry) {
lc[lc_len++] = carry;
}
// 将 lc 转化为字符串 c
for (i = lc_len - 1, j = 0; i >= 0; i--, j++) {
c[j] = lc[i] + '0';
}
c[j] = '\0';
// 输出结果
printf("%s + %s = %s\n", a, b, c);
return 0;
}
```
这个程序使用了三个字符数组来分别存储两个加数和它们的和。另外,还用了三个整型数组 `la`、`lb` 和 `lc` 来存储转化后的加数和和。程序首先将输入的字符串转化为整型数组,然后执行加法,最后再将结果转化为字符串输出。
需要注意的是,这个程序只能处理非负整数的加法。如果需要处理负数的加法,还需要额外的处理。
阅读全文