#include <iostream>
#include<string.h>
#include<stdio.h>
#if 0
高精度算法:
对于超限数据的计算,加减乘除,利用竖式计算
用字符串保存数据,然后将其保存在数组中,逆序保存,计算即可,遇到进位就加,借位就减
#endif
int main()
{
const int len = 101;
//101位数据
//两个数组保存数据
char a[len], b[len];
printf("-------请输入两个数\n");
scanf("%s%s", a, b);
//接下来是将字符串循环输入数组中,使用动态分配
int a_1 = strlen(a);
int b_1 = strlen(b);
char* a1 = (char*)malloc(a_1 * sizeof(char));//a1数组
char* b1 = (char*)malloc(b_1 * sizeof(char));
for (int i = 0; i < a_1; i++)
{
a1[i] = a[a_1- 1 - i] - '0';
printf("-%d ", a1[i]);
}
for (int i = 0; i < b_1; i++) b1[i] = b[b_1- 1 - i] - '0';
//逆序保存完成
int x = 0, len_ = 0;
//保存收集写完的数据
char* p = NULL;
if (a_1 < b_1) p = (char*)malloc(b_1 * sizeof(char));
else p = (char*)malloc(a_1 * sizeof(char));
while (len_ <= a_1 || len_ <= b_1)
{
p[len_] = a1[len_] + b1[len_] + x;//两个数据相加,再加进位
printf("%d ", p[len_]);
x = p[len_] / 10;//进位
p[len_] = p[len_] % 10;//满十进位,保留个位
len_++;//完成继续下一位
}
// int len_m = _msize(p);
for (int i = 0; i < _msize(p); i++)
printf("%d", p[_msize(p)- 1 - i]);
return 0;
}
高精度算法--个人笔记
最新推荐文章于 2024-10-07 09:58:35 发布