用C语言写超长正整数的减法
时间: 2023-04-03 15:03:51 浏览: 176
可以使用字符串来表示超长正整数,然后按照减法的规则逐位相减,注意借位的处理。具体实现可以参考以下代码:
```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 temp = str[i];
str[i] = str[len - i - 1];
str[len - i - 1] = temp;
}
}
void subtract(char *a, char *b, char *result) {
int len_a = strlen(a);
int len_b = strlen(b);
reverse(a);
reverse(b);
int borrow = 0;
for (int i = 0; i < len_a; i++) {
int digit_a = a[i] - '0';
int digit_b = i < len_b ? b[i] - '0' : 0;
int diff = digit_a - digit_b - borrow;
if (diff < 0) {
diff += 10;
borrow = 1;
} else {
borrow = 0;
}
result[i] = diff + '0';
}
while (result[len_a - 1] == '0' && len_a > 1) {
len_a--;
}
result[len_a] = '\0';
reverse(result);
}
int main() {
char a[MAX_LEN], b[MAX_LEN], result[MAX_LEN];
printf("请输入被减数:");
scanf("%s", a);
printf("请输入减数:");
scanf("%s", b);
subtract(a, b, result);
printf("结果为:%s\n", result);
return 0;
}
```
注意,这只是一个简单的实现,没有考虑输入的合法性和错误处理。在实际应用中,需要对输入进行验证和处理,以保证程序的正确性和健壮性。
阅读全文