任意长度的两个正整数相加

#include<iostream>  
#include<assert.h>  
#include<string.h>  
#include<stdlib.h>  
#include<math.h> 
using namespace std;
#define MAXSIZE 10


void BigNumberPlus(char *number1,char *number2)
{
   int over=0;
   int sum=0;
   int isOverFlow=0;
   char *Sum=new char[MAXSIZE+2];
   int len1=strlen(number1);
   int len2=strlen(number2);
   int maxlen=len1>len2 ? len1:len2;
   char *temp1=new char[maxlen+1];
   char *temp2=new char[maxlen+1];
   memset(temp1,'0',maxlen);
   temp1[maxlen]='\0';
   memset(temp2,'0',maxlen);
   temp2[maxlen]='\0';
   int i=0,j=0;
   for (i = len1 -1;i>=0;i--)  
       {  
           temp1[j++] = number1[i];  
       }  
       j =0;  
   for (i = len2 -1;i>=0;i--)  
       {  
           temp2[j++] = number2[i];  
       }  
       
   for(i=0;i<maxlen;i++)
   {
       sum=temp1[i]-'0'+temp2[i]-'0'+over;
       if(sum>=10)
       {
          if(i==maxlen-1)
          {
            isOverFlow=1;
         }
         over=1;
         sum=sum-10;
         Sum[i]=sum+'0';
       }
       else
       {
          over=0;
          Sum[i]=sum+'0';
       }
   }
   if(isOverFlow)
   {
      Sum[maxlen++]='0'+over;
   }
   Sum[maxlen]='\0';
   int len =strlen(Sum);
   for(i=len-1;i>=0;i--)
      cout<<Sum[i];
   cout<<endl;
   delete []temp1;
   delete []temp2;
   delete []Sum;
}
int main(void)
{
char *number1=new char[MAXSIZE+1];
char *number2=new char[MAXSIZE+1];
    cout<<"please input a number:"<<endl;  
    gets(number1);  
    cout<<"please input a number:"<<endl;  
    gets(number2); 
BigNumberPlus(number1,number2); 
return 0;
}

猜你喜欢

转载自blog.csdn.net/qq_38211852/article/details/80193347