精度计算 大数加大数
本算法是用来计算一个大数(现有的数据类型无法表示的数)加上一个大数(现有的数据类型无法表示的数)。
算法思路是把作为被加数和加数的大数的每一位都当做一个字符分别放入一个字符数组中,再把加数的各个位与被加数的各个位从最低位依次相加,将结果存放在一个字符指针中,最后再放入一个结果数组中。
下面是我的C语言实现过程
#include<stdio.h>
#include<string.h>
void add(char a[],char b[],char back[]);
main()
{
char a[65] = "1312312321";
char b[65] = "123123123123";
char back[130] = "";
add(a,b,back);
printf("%s",back);
}
void add(char a[],char b[],char back[])
{
int i,j,k,up,x,y,z,l;
char *c;
if (strlen(a)>strlen(b))
l=strlen(a)+2;
else
l=strlen(b)+2;
c=(char *) malloc(l*sizeof(char));
i=strlen(a)-1;
j=strlen(b)-1;
k=0;up=0;
while(i>=0||j>=0)
{
if(i<0)
x='0';
else
x=a[i];
if(j<0)
y='0';
else
y=b[j];
z=x-'0'+y-'0';
if(up)
z+=1;
if(z>9)
{
up=1;
z%=10;
}
else
up=0;
c[k++]=z+'0';
i--;
j--;
}
if(up)
c[k++]='1';
i=0;
c[k]='\0';
for(k-=1;k>=0;k--)
back[i++]=c[k];
back[i]='\0';
}