배열 을 사용 하여 큰 정수 덧셈 을 실현 하 다.

2331 단어 배열
#include<iostream>
#include<string>
#include<cstring>
#include<cstdio>
#include<algorithm>
#include<ctype.h>
using namespace std;
char* add(const char *arr,const char *brr)
{
    //              
    int lena=strlen(arr);
    int lenb=strlen(brr);
    int maxlen=(lena<lenb)?lenb:lena;
    /*                  maxlen           mxlen+1
               '\0',         malloc(maxlen+2);*/
    char* sum=(char*)malloc(maxlen+2);
    memset(sum,'0',maxlen+1);//       
    sum[maxlen+1]='\0';   //       
    int cin=0,k=0;    //      0
    while(lena-->0 && lenb-->0)  //              
    {
        int left=arr[lena]-'0'; //         
        int right=brr[lenb]-'0'; //         
        int s=left+right+cin;
        cin=s/10;
        s%=10;
        sum[k++]=s+'0';
    }
    if(lena<=0)  //   a   
    {
        while(lenb-->0)
        {
            int left=0;
            int right=brr[lenb]-'0';
            int s=left+right+cin;
            cin=s/10;        //C   
            s%=10;
            sum[k++]=s+'0';
        }
    }
    else if(lenb<=0)
    {
        while(lena-->0)
        {
            int left=arr[lena]-'0';
            int right=0;
            int s=left+right+cin;
            cin=s/10;
            s%=10;
            sum[k++]=s+'0';

        }
    }
    /*         :
            ,    0     
       ,                */
    if(cin!=0)
        sum[k++]=cin+'0';
    //                        
    sum[k]='\0';
    strrev(sum); //     
    return sum;
}

int main()
{
    char a[]="20085121428"; //       
    char b[]="20134200802";  //       
    char result[100]={0};
    memset(result,'0',sizeof(result));
    char *p=add(a,b);
    cout<<"result is "<<p<<endl;
    free(p);
    p=NULL;
}

좋은 웹페이지 즐겨찾기