语法:add(char a[],char b[],char s[]);
参数:
a[]: 被乘数,用字符串表示,位数不限
b[]: 乘数,用字符串表示,位数不限
t[]: 结果,用字符串表示
返回值: null
注意:
空间复杂度为 o(n^2)
需要 string.h
源程序:
#include <iostream> #include <string.h> using namespace std; 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'; } void add(char a[],char b[],char back[]); int main() { char a[100]; char b[100]; char back[100]; cout<<"请输入两个大数:"<<endl; cin>>a>>b; add(a,b,back); cout<<"大数相加结果是:"<<back<<endl; return 0; }
本文转自博客园xingoo的博客,原文链接:大数加法,如需转载请自行联系原博主。