加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

大数加法字符串版本

发布时间:2020-12-14 02:58:07 所属栏目:大数据 来源:网络整理
导读:大数+大数。 #include iostream#include cstdio#include cstringusing namespace std;char * add(char *a,char *b,char *c){ int lena = strlen(a); int lenb = strlen(b); int lenc = 0; int righta,rightb ; righta = lena -1 ; rightb = lenb - 1; int up

大数+大数。

#include <iostream>
#include <cstdio>
#include <cstring>

using namespace std;

char * add(char *a,char *b,char *c)
{
    int lena = strlen(a);
    int lenb = strlen(b);

    int lenc = 0;

    int righta,rightb ;
    righta = lena -1 ;
    rightb = lenb - 1;
    int up = 0;
    int x,y,z;
    while(righta >=0 || rightb >=0)
    {
        if(righta < 0) x = 0 ; else x = a[righta--] - '0';
        if(rightb < 0) y = 0 ; else y = b[rightb--] - '0';

        z = x+y + up;

        //处理进位
        if(z >= 10)
        {
            up = z/10;
            z = z%10;
        }
        else up = 0;
        c[lenc++] = z+'0';
    }
    if(up) c[lenc++] = up + '0';
    c[lenc] = 0;
    for(int i=0 ; i<lenc/2 ; i++)
    {
        char t;
        t = c[i];c[i]=c[lenc-i-1];c[lenc-i-1]=t;
    }

    return c;


}


int main()
{
    FILE *pInput;
    pInput = fopen("input.txt","r");

    char a[110],b[110],c[110];
    while(fscanf(pInput,"%s%s",a,b) == 2)
    {
        printf("%sn",add(a,b,c));
    }

    fclose(pInput);
    return 0;
}

需要在同目录下新建输入文件,文件名为input.txt,可以有多行,每行两个数字,空格隔开,例如

input。txt:

123456 654321
7451 258


直接执行,结果会在屏幕上输出,如果需要输出到文件,则可以做如下修改:

#include <iostream>
#include <cstdio>
#include <cstring>

using namespace std;

char * add(char *a,z;
    while(righta >=0 || rightb >=0)
    {
        if(righta < 0) x = 0 ; else x = a[righta--] - '0';
        if(rightb < 0) y = 0 ; else y = b[rightb--] - '0';

        z = x+y + up;

        //处理进位
        if(z >= 10)
        {
            up = z/10;
            z = z%10;
        }
        else up = 0;
        c[lenc++] = z+'0';
    }
    if(up) c[lenc++] = up + '0';
    c[lenc] = 0;
    for(int i=0 ; i<lenc/2 ; i++)
    {
        char t;
        t = c[i];c[i]=c[lenc-i-1];c[lenc-i-1]=t;
    }

    return c;


}


<pre name="code" class="cpp">int main()
{
    FILE *pInput,*pOut;
    pInput = fopen("in.txt","r");
    pOut = fopen("out.txt","w");
    char a[110],b) == 2)
    {
        fprintf(pOut,"%sn",c));
    }

    fclose(pInput);
    fclose(pOut);
    return 0;
}

 

标准输入输出的,可以直接对main函数修改,将文件相关的都去掉:

int main()
{
    char a[110],c[110];
    while(scanf("%s%s",c));
    }
    return 0;
}

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读