一、程序题:高精度减法计算: 将两个大数整数数字通过arl与ar2字符数组进行存储,最终计算出两个整数数字之差。如何用c++完成这个代码
时间: 2023-04-07 11:03:32 浏览: 77
以下是一个高精度减法计算的 C 代码示例:
```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;
}
}
int main() {
char ar1[MAX_LEN], ar2[MAX_LEN];
scanf("%s%s", ar1, ar2);
int len1 = strlen(ar1), len2 = strlen(ar2);
reverse(ar1);
reverse(ar2);
int len = len1 > len2 ? len1 : len2;
for (int i = len1; i < len; i++) {
ar1[i] = '0';
}
for (int i = len2; i < len; i++) {
ar2[i] = '0';
}
ar1[len] = ar2[len] = '\0';
char result[MAX_LEN];
int borrow = 0;
for (int i = 0; i < len; i++) {
int digit1 = ar1[i] - '0', digit2 = ar2[i] - '0';
int diff = digit1 - digit2 - borrow;
if (diff < 0) {
diff += 10;
borrow = 1;
} else {
borrow = 0;
}
result[i] = diff + '0';
}
result[len] = '\0';
reverse(result);
printf("%s\n", result);
return 0;
}
```
该代码通过 `scanf` 函数读入两个大数整数数字,将它们存储在 `ar1` 和 `ar2` 字符数组中。然后,将这两个数组反转,使得低位数字在数组的前面。接着,将这两个数组的长度扩展到相同的长度,不足的高位补零。然后,从低位到高位逐位相减,将结果存储在 `result` 数组中。最后,将 `result` 数组反转,输出结果。
注意,该代码没有进行输入格式检查和错误处理,仅供参考。