c语言实现大整数减法运算的思路
时间: 2023-10-19 19:05:51 浏览: 150
C语言实现大整数加减运算详解
5星 · 资源好评率100%
大整数减法的思路和小学数学中的减法一样,从个位开始逐位相减,如果被减数小于减数,则向高位借位。具体实现过程如下:
1. 将两个大整数转换成相同长度,可以在较短的整数前面补0,使得两个整数的位数相同。
2. 从末位开始逐位相减,如果被减数小于减数,则向高位借位,借位后被减数加上10。
3. 将相减后的结果存入结果数组中。
4. 最后,将结果数组中的数反向输出,即为减法的结果。
以下是 C 语言实现大整数减法运算的示例代码:
```c
#include <stdio.h>
#include <string.h>
#define N 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;
}
}
int main() {
char a[N], b[N], res[N];
int lena, lenb, len;
int i, j, k, borrow;
printf("请输入被减数:");
scanf("%s", a);
printf("请输入减数:");
scanf("%s", b);
lena = strlen(a);
lenb = strlen(b);
// 将较短的整数前面补0,使得两个整数的位数相同
if (lena < lenb) {
for (i = lena - 1; i >= 0; i--) {
a[i + lenb - lena] = a[i];
}
for (i = 0; i < lenb - lena; i++) {
a[i] = '0';
}
len = lenb;
} else {
for (i = lenb - 1; i >= 0; i--) {
b[i + lena - lenb] = b[i];
}
for (i = 0; i < lena - lenb; i++) {
b[i] = '0';
}
len = lena;
}
// 从末位开始逐位相减
borrow = 0;
for (i = len - 1; i >= 0; i--) {
k = a[i] - b[i] - borrow;
if (k < 0) {
k += 10;
borrow = 1;
} else {
borrow = 0;
}
res[i] = k + '0';
}
// 去掉结果前面的0,并将结果反向输出
i = 0;
while (res[i] == '0' && i < len - 1) {
i++;
}
for (j = i; j < len; j++) {
printf("%c", res[j]);
}
printf("\n");
return 0;
}
```
阅读全文