实现两个大数相加!

来源:互联网 发布:apache lucene 编辑:程序博客网 时间:2024/06/05 12:44

这是xxx的一个上机题目,实现两个大数的相加

void mylongadd(char *a, char *b, char *c){int len_a = strlen(a);    int len_b = strlen(b);    int i = len_a - 1,j = len_b -1;    int k = 0,flag = 0;    int x,y;    while(i >= 0 || j >= 0)    {        if(i < 0) x = '0';        else            x = a[i];        if(j < 0) y = '0';        else            y = b[j];        int z = x - '0' + y - '0';        if(flag)            z += 1;        if(z > 9)        {                flag = 1;            z %= 10;        }        else            flag = 0;        c[k ++] = z + '0';        i--;        j--;    }    if(flag)    c[k++] = '1';    c[k++] = '\0'; //必须要的    for(int p = strlen(c)-1; p >= 0; p--)    {        cout << c[p];    }    cout << endl;    }
main函数中

        char a[100]="123456789123456789";char b[100]="123456789123456789";char c[100];cout<<"   "<<a<<"\r\n"<<"+"<<"  "<<b<<"\r\n"<<"="<<"  ";mylongadd(a,b,c);

结果为



0 0