大数加法 自定义函数

来源:互联网 发布:免费手机网络电话软件 编辑:程序博客网 时间:2024/06/14 06:12

jia(ans,a,b)相当于ans=a+b;
输入输出都用%s输入。

#include<cstdio>  #include<cstring>#include<map>#define bit 1000using namespace std;int kase = 0;int jia(char ans[], char a1[], char b1[]){    int a[bit], b[bit], c[bit];    int lena, lenb, lenc, i, x;    memset(a, 0, sizeof(a));    memset(b, 0, sizeof(b));    memset(c, 0, sizeof(c));    lena = strlen(a1);    lenb = strlen(b1);    for (i = 0; i <= lena - 1; i++)        a[lena - i] = a1[i] - 48;    for (i = 0; i <= lenb - 1; i++)        b[lenb - i] = b1[i] - 48;    lenc = 1; x = 0;    while (lenc <= lena || lenc <= lenb)    {        c[lenc] = a[lenc] + b[lenc] + x;        x = c[lenc] / 10;        c[lenc] %= 10;        lenc++;    }    c[lenc] = x;    if (c[lenc] == 0)        lenc--;    int top = 0;    for (i = lenc; i >= 1; i--)        ans[top++] = c[i] + '0';    ans[top] = '\0';    return 0;}

string版,区别不大。

#include<cstdio>  #include<cstring>#include<string>#include<map>#define bit 1000using namespace std;int kase = 0;int jia(string ans, string a1, string b1){    int a[bit], b[bit], c[bit];    int lena, lenb, lenc, i, x;    memset(a, 0, sizeof(a));    memset(b, 0, sizeof(b));    memset(c, 0, sizeof(c));    lena = a1.length();    lenb = b1.length();    for (i = 0; i <= lena - 1; i++)        a[lena - i] = a1[i] - 48;    for (i = 0; i <= lenb - 1; i++)        b[lenb - i] = b1[i] - 48;    lenc = 1; x = 0;    while (lenc <= lena || lenc <= lenb)    {        c[lenc] = a[lenc] + b[lenc] + x;        x = c[lenc] / 10;        c[lenc] %= 10;        lenc++;    }    c[lenc] = x;    if (c[lenc] == 0)        lenc--;    int top = 0;    for (i = lenc; i >= 1; i--)        ans[top++] = c[i] + '0';    ans[top] = '\0';    return 0;}
原创粉丝点击