微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

大数加法字符串版本

大数+大数。

#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("%s\n",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,"%s\n",c));
    }

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

 

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

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

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐