高精度算法(一)高精度加法

学过编程的大家一定对int long 不陌生吧,那么自然是知道它们各自能表达的数范围,比如int能表示范围为2^32,这看起来很大,但在大数据时代的如今,不说是int 哪怕是long long也是不够的,那么为了使用或计算这些超出或远超整形大小的数,我们就需要使用多个数来表示这一个数,表示多个数的数据类型在c语言里有数组和字符串。
数组:每个数组元素储存一位数(不一定是个位数,也可能是10 12甚至2000),数组的优点是可以直接进行加减计算,而缺点却是无法直接输入,每位数之间需要有分隔符,这不符合数值输入的习惯
字符串:字符串的优点便是可以直接输入,符合数值输入的习惯,但是它每一个元素储存的是一个字符而不是数字,不可以直接进行运算
综上所述,取长补短,用字符串读取输入,用数组计算输出。
附上代码

#include
#include
#define MAX 1000
int main(void)
{
	char str[MAX];
	int arr1[MAX]={0},arr2[MAX]={0},len,len1,len2,i,j;
	scanf("%s",str);
	len1=strlen(str);
	for(i=0;ilen2)?len1:len2;
	for(i=0;i

当然,上述代码仅能处理整形加减,想要处理浮点数则需要添加判断条件,以识别小数点,这时最后导出要用到的是字符串而不是数组,当然我们也可以同时处理多位数而不只是一位数,这样可以减少大量计算以提高运行速度,代码将在以后更新。

你可能感兴趣的:(高精度算法(一)高精度加法)