#include<iostream> using namespace std; void sum(char *a, char *b, char *sum); int main() { char a[] = "5234563847377488737676663332233456612345678333445"; char b[] = "9567832990876544556677777345512345678901234"; const int size = 100; char c[size]; memset(c, 0, sizeof(char)*size); sum(a, b, c); //求和 //处理之前,c数组数字个数比较长的那个a多一位 if('0'==c[0]) { for(int i=0; i<size; i++) { c[i] = c[i+1]; } } cout<<c<<endl; return 0; } void SumExt(char *a, char *b, char *sum, int aLength, int bLength) //aLength一定比bLength长 { if(NULL==a || NULL==b || NULL==sum) { return; } if(aLength<bLength) { return; } int length = aLength + 1; char zero = '0'; int temp = 0; char one = '1'; char carry = zero; while(1) { temp = 0; if(bLength>0) { temp = (int)((a[aLength-1] - zero) + (b[bLength-1] - zero) + (carry - zero)); aLength--; bLength--; } else { if(aLength>0) { temp = (int)((a[aLength-1] - zero) + (carry - zero)); aLength--; } else { temp = (int)(carry - zero); } } if(temp/10==1) { carry = one; } else { carry = zero; } sum[length-1] = temp%10 + zero; length--; if(length<0) { break; } } } void sum(char *a, char *b, char *sum) { if(NULL==a || NULL==b || NULL==sum) { return; } int aLength = strlen(a); int bLength = strlen(b); if(aLength>=bLength) { SumExt(a, b, sum, aLength, bLength); } else { SumExt(b, a, sum, bLength, aLength); } }