c++ 实现 高精度减法。输入两个正整数,求它们的差。 输入 两行,每行为一个高精度整数,长度不超过255。 输出 相减的结果。
时间: 2024-05-27 11:14:44 浏览: 98
#include <stdio.h>
#include <string.h>
#define MAX_LEN 256
int main()
{
char a[MAX_LEN], b[MAX_LEN];
int num1[MAX_LEN], num2[MAX_LEN], result[MAX_LEN];
int len1, len2, len, carry = 0;
// 读入两个高精度整数
scanf("%s %s", a, b);
len1 = strlen(a);
len2 = strlen(b);
// 将字符串转为整数数组,并翻转数组
for (int i = 0; i < len1; i++)
num1[i] = a[len1 - i - 1] - '0';
for (int i = 0; i < len2; i++)
num2[i] = b[len2 - i - 1] - '0';
// 计算差值
len = len1 > len2 ? len1 : len2;
for (int i = 0; i < len; i++) {
int diff = num1[i] - num2[i] - carry;
if (diff < 0) {
diff += 10;
carry = 1;
} else {
carry = 0;
}
result[i] = diff;
}
// 去掉前导0
while (len > 1 && result[len - 1] == 0)
len--;
// 输出结果
for (int i = len - 1; i >= 0; i--)
printf("%d", result[i]);
printf("\n");
return 0;
}
阅读全文