你可以使用c++写一个高精度加法的模板吗
时间: 2024-05-04 18:17:06 浏览: 11
当然可以,下面是一个简单的高精度加法模板:
```c
#include <stdio.h>
#include <string.h>
#define max(a,b) (a>b?a:b)
char a[1005], b[1005], c[1005];
void reverse(char *str) {
int len = strlen(str);
for(int i = 0; i < len / 2; i++) {
char tmp = str[i];
str[i] = str[len - 1 - i];
str[len - 1 - i] = tmp;
}
}
int main() {
scanf("%s%s", a, b);
int la = strlen(a), lb = strlen(b);
reverse(a);
reverse(b);
int len = max(la, lb);
int carry = 0;
for(int i = 0; i < len; i++) {
int x = i < la ? (a[i] - '0') : 0;
int y = i < lb ? (b[i] - '0') : 0;
int sum = x + y + carry;
c[i] = sum % 10 + '0';
carry = sum / 10;
}
if(carry) {
c[len++] = carry + '0';
}
c[len] = '\0';
reverse(c);
printf("%s\n", c);
return 0;
}
```
该模板使用了字符串来存储高精度数,将输入的两个数反转后,从低位到高位,依次相加,并记录下进位。最后再将结果反转输出即可。需要注意的是,由于高精度数可能非常大,因此在定义字符串时需要给数组足够的空间。