#include "iostream.h"
#include "string.h"
#define  MAX  100
char rstr[MAX];

//交换两个字符

void swap(char &a,char &b)
{
 int tmp = a;
    a = b;
 b = tmp;
}

//反转字符串
void ReverseStr(char str[])
{
 int len = strlen(str) – 1;
 for (int i = 0; i <= len/2 ;i++)
 {
  swap(str[i],str[len -i]);
 }
}

//大数相加函数

char* BigIntAdd(char stra[],char strb[])
{
 int alen = strlen(stra);
 int blen = strlen(strb);
 //ReverseStr the str
 ReverseStr(stra);
    ReverseStr(strb);
 int flag = 0; //标志是否有进位
 int i = 0;
 int j = 0;
 do
 {

//异常处理两个数的结尾,如果字符串有一个结束最后一位用’0′字符代替
  if (i >= alen)
        {
   stra[i] = ‘0′;
        }
  if (j >= blen)
  {
      strb[j] = ‘0′;
  }

//结果字符串rstr
  rstr[i] = ((stra[i] – ‘0′) + (strb[i] – ‘0′)+flag)%10 +’0′;
  flag = ((stra[i] – ‘0′) + (strb[i] – ‘0′)+flag)/10;//进位的处理
        i++;
     j++;
 }while (i < alen || j < blen);
 ReverseStr(rstr);
 rstr[MAX] = ‘\0′;
 return rstr;
}
void main()
{         
 char stra[] = "666666666666666666666666987986986666666666666668799898989898676";
 char strb[] = "987986986666666666666668799898989898676666666666666666698798";
 char *RetStr = BigIntAdd(stra,strb);
    cout<<RetStr<<endl;
 
}

result:667654653653333333333333656786885656565343333335466565656597474


评论

该日志第一篇评论

发表评论

评论也有版权!