高精度数的计算器c++算法代码
时间: 2023-03-20 07:00:12 浏览: 121
高精度数的计算器一般使用字符串表示数字,然后模拟手工计算的过程进行计算。下面是一个简单的高精度数的加法算法代码示例(使用C语言实现):
```c
#include <stdio.h>
#include <string.h>
#define MAXN 1005
int a[MAXN], b[MAXN], c[MAXN];
void reverse(char s[]) {
int len = strlen(s);
for (int i = 0; i < len / 2; i++) {
char temp = s[i];
s[i] = s[len - 1 - i];
s[len - 1 - i] = temp;
}
}
void str_to_int(char s[], int num[]) {
reverse(s);
int len = strlen(s);
for (int i = 0; i < len; i++) {
num[i] = s[i] - '0';
}
}
void int_to_str(int num[], char s[]) {
int len = 0;
for (int i = MAXN - 1; i >= 0; i--) {
if (num[i] != 0) {
len = i + 1;
break;
}
}
for (int i = 0; i < len; i++) {
s[i] = num[len - 1 - i] + '0';
}
s[len] = '\0';
reverse(s);
}
void add(int a[], int b[], int c[]) {
int carry = 0;
for (int i = 0; i < MAXN; i++) {
c[i] = a[i] + b[i] + carry;
carry = c[i] / 10;
c[i] %= 10;
}
}
int main() {
char sa[MAXN], sb[MAXN];
scanf("%s%s", sa, sb);
str_to_int(sa, a);
str_to_int(sb, b);
add(a, b, c);
char sc[MAXN];
int_to_str(c, sc);
printf("%s\n", sc);
return 0;
}
```
这个算法实现了两个字符串表示的数字的加法操作,其中 `MAXN` 是表示数字的最大位数,本示例中设置为1005,可以根据需要适当调整。
这个算法的实现过程比较简单,首先将字符串表示的数字转换成整型数组表示的数字,然后进行加法操作,最后将得到的结果转换回字符串表示的数字。
阅读全文