c语言超长整数的加减运算
时间: 2023-09-27 08:05:48 浏览: 219
C经典算法之超长整数运算(大数运算)
4星 · 用户满意度95%
在 C 语言中,超长整数可以通过数组来表示,每个数组元素表示相应位上的数字。超长整数的加减运算可以分为以下几个步骤:
1. 将两个超长整数的数组长度补齐,即在长度较短的数组前面补上若干个 0。
2. 从低位到高位逐位相加(或相减),同时考虑进位(或借位)。
3. 如果最高位有进位(或借位),则需要将数组长度加 1,并在最高位上填上进位(或借位)。
下面是一个实现超长整数加法的示例代码:
```c
#include <stdio.h>
#include <string.h>
#define MAX_LEN 1000
void reverse(char *str) {
int len = strlen(str);
for (int i = 0; i < len / 2; i++) {
char tmp = str[i];
str[i] = str[len - i - 1];
str[len - i - 1] = tmp;
}
}
void add(char *a, char *b, char *result) {
int len_a = strlen(a);
int len_b = strlen(b);
int len = len_a > len_b ? len_a : len_b;
int carry = 0;
for (int i = 0; i < len; i++) {
int num_a = i < len_a ? a[i] - '0' : 0;
int num_b = i < len_b ? b[i] - '0' : 0;
int sum = num_a + num_b + carry;
result[i] = sum % 10 + '0';
carry = sum / 10;
}
if (carry > 0) {
result[len] = carry + '0';
len++;
}
result[len] = '\0';
reverse(result);
}
int main() {
char a[MAX_LEN], b[MAX_LEN], result[MAX_LEN + 1];
printf("Enter first number: ");
scanf("%s", a);
printf("Enter second number: ");
scanf("%s", b);
add(a, b, result);
printf("Result: %s\n", result);
return 0;
}
```
注意,上面的代码只实现了超长整数的加法,如果需要进行减法运算,可以将其中一个数取相反数,然后进行加法运算。同时,还需要特别注意两个数相等的情况。
阅读全文