用c语言写一个用数组的方式进行长整数处理的软件 功能包括加减运算
时间: 2024-01-22 16:19:21 浏览: 25
好的,下面是用数组的方式进行长整数处理的 C 语言代码,包括加减运算:
```c
#include <stdio.h>
#include <string.h>
#define MAX_LEN 1000 // 长整数最大长度
// 将字符串转换为长整数
void str_to_num(char str[], int num[]) {
int len = strlen(str);
for (int i = 0; i < len; i++) {
num[i] = str[len - 1 - i] - '0';
}
}
// 将长整数转换为字符串
void num_to_str(int num[], char str[]) {
int len = 0;
for (int i = MAX_LEN - 1; i >= 0; i--) {
if (num[i] != 0) {
len = i + 1;
break;
}
}
for (int i = 0; i < len; i++) {
str[i] = num[len - 1 - i] + '0';
}
str[len] = '\0';
}
// 长整数加法
void num_add(int a[], int b[], int c[]) {
int carry = 0;
for (int i = 0; i < MAX_LEN; i++) {
int sum = a[i] + b[i] + carry;
carry = sum / 10;
c[i] = sum % 10;
}
}
// 长整数减法
void num_sub(int a[], int b[], int c[]) {
int borrow = 0;
for (int i = 0; i < MAX_LEN; i++) {
int diff = a[i] - b[i] - borrow;
if (diff < 0) {
diff += 10;
borrow = 1;
} else {
borrow = 0;
}
c[i] = diff;
}
}
int main() {
char str_a[MAX_LEN + 1], str_b[MAX_LEN + 1];
int num_a[MAX_LEN], num_b[MAX_LEN], num_c[MAX_LEN];
printf("请输入两个长整数:");
scanf("%s%s", str_a, str_b);
str_to_num(str_a, num_a);
str_to_num(str_b, num_b);
num_add(num_a, num_b, num_c);
char str_c[MAX_LEN + 1];
num_to_str(num_c, str_c);
printf("%s + %s = %s\n", str_a, str_b, str_c);
num_sub(num_a, num_b, num_c);
num_to_str(num_c, str_c);
printf("%s - %s = %s\n", str_a, str_b, str_c);
return 0;
}
```
上述代码通过数组的方式实现了长整数的加减运算,其中 `str_to_num` 函数将字符串转换为长整数,`num_to_str` 函数将长整数转换为字符串,`num_add` 函数实现长整数加法,`num_sub` 函数实现长整数减法。主函数中读入两个字符串表示的长整数,进行加减运算后输出结果。