高精度加法模板(string类,char)

来源:互联网 发布:mac中毒会有什么反应 编辑:程序博客网 时间:2024/06/05 14:23
方法1:string类
void add(string &s1,string s2)//s1=s1+s2 {int i,j,sum=0;if(s1.length()<s2.length()) swap(s1,s2);    for(i=s1.length()-1,j=s2.length()-1;i>=0;i--,j--)    {   sum+=s1[i]-'0';  if(j>=0) sum+=s2[j]-'0';              s1[i]=sum%10+'0'; sum/=10;     }    if(sum) s1='1'+s1;}

方法2:string 类

void  sum(string &a,string b)  // a=a+b{   int  i,j,k,c,s;    while (a.length()>b.length())  b='0'+b;//  a,b处理成一样长     while (b.length()>a.length())  a='0'+a;    c=0;    for (i=a.length()-1; i>=0; i--)    {     s=a[i]-48+b[i]-48+c;          if ( s>9 ) { s=s%10; c=1;}  else c=0;          a[i]=48+s;    }    if ( c>0 ) a='1'+a;}

 

方法3:char字符

void add(char a[],char b[])//a=a+b{   int i,j,k,sum=0;   k=strlen(a)>strlen(b)?strlen(a):strlen(b);   a[k+1]=0;   for(i=strlen(a)-1,j=strlen(b)-1;i>=0||j>=0;i--,j--,k--)   {   if(i>=0) sum+=a[i]-'0';  if(j>=0) sum+=b[j]-'0';        a[k]=sum%10+'0'; sum/=10;    }   if(sum) a[0]=sum+'0'; else strcpy(a,&a[1]);   }




 

原创粉丝点击