大数加法

语法: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;

}

你可能感兴趣的:(大数加法)