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

大数加法

发布时间:2020-12-14 03:18:14 所属栏目:大数据 来源:网络整理
导读:#include stdio.h #include string .h #include stdlib.h #define MaxSize 1000 char *TwoBigNumPlus( char *InputAddend_1, char * InputAddend_2){ char *Result = malloc (MaxSize* sizeof ( char )); int ResultEnd = 0 ; int AddendLen_1 = strlen(Inpu
#include <stdio.h>
#include <string.h>
#include <stdlib.h>

#define MaxSize 1000

char *TwoBigNumPlus(char *InputAddend_1,char *InputAddend_2)
{
    char *Result = malloc(MaxSize*sizeof(char));
    int ResultEnd = 0;
    
    int AddendLen_1 = strlen(InputAddend_1);
    int AddendLen_2 = strlen(InputAddend_2);
    
    int Addend_1[MaxSize];
    int Addend_2[MaxSize];
    memset(Addend_1,0,sizeof(Addend_1));
    memset(Addend_2,sizeof(Addend_2));
    
    //reverse to store
    int InputAddendEnd,AddendEnd;
    for(InputAddendEnd = AddendLen_1-1,AddendEnd = 0;InputAddendEnd >= 0;InputAddendEnd --)
    {
        Addend_1[AddendEnd ++] = InputAddend_1[InputAddendEnd] - 0;
    }
    for(InputAddendEnd = AddendLen_2-1,AddendEnd = 0;InputAddendEnd >= 0;InputAddendEnd --)
    {
        Addend_2[AddendEnd ++] = InputAddend_2[InputAddendEnd] - 0;
    }
    
    //Plus && Carry
    for(AddendEnd = 0;AddendEnd < MaxSize;AddendEnd ++)
    {
        Addend_2[AddendEnd] += Addend_1[AddendEnd];
        if(Addend_2[AddendEnd] >= 10)
        {
            Addend_2[AddendEnd+1] += Addend_2[AddendEnd] / 10;
            Addend_2[AddendEnd] %= 10;
        }
    }
    
    //store to return
    //0 screening
    for(AddendEnd = MaxSize-1;AddendEnd>=0 && Addend_2[AddendEnd]==0;AddendEnd --)
        ;
    if(AddendEnd >= 0)
    {
        for( ;AddendEnd >= 0;AddendEnd --)
        {
            Result[ResultEnd++] = Addend_2[AddendEnd] + 0;
        }
    }
    else
    {
        Result[ResultEnd++] = 0;
    }
    Result[ResultEnd] = ;
    return Result;
} 

int main()
{
    char InputAddend_1[MaxSize] = "99";
    char InputAddend_2[MaxSize] = "99999999";
    
    char *Result = TwoBigNumPlus(InputAddend_1,InputAddend_2);
    puts(Result);
    return 0;
}

(编辑:李大同)

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

    推荐文章
      热点阅读