高精度加法的C++实现

精度计算——加法

语法:add(char a[],char b[],char s[]);

参数:

a[]:被乘数,用字符串表示,位数不限

b[]:乘数,用字符串表示,位数不限

t[]:结果,用字符串表示

返回值:null

注意:

空间复杂度为o(n^2)

需要string.h

源程序:

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(lsizeof(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';

}

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';}

原文链接: https://www.cnblogs.com/kuangbin/archive/2011/07/22/2113836.html

欢迎关注

微信关注下方公众号,第一时间获取干货硬货;公众号内回复【pdf】免费获取数百本计算机经典书籍

原创文章受到原创版权保护。转载请注明出处:https://www.ccppcoding.com/archives/29150

非原创文章文中已经注明原地址,如有侵权,联系删除

关注公众号【高性能架构探索】,第一时间获取最新文章

转载文章受原作者版权保护。转载请注明原作者出处!

(0)
上一篇 2023年2月8日 上午6:32
下一篇 2023年2月8日 上午6:34

相关推荐