int revstr(char *str) { char ch; char *start = str; char *end = str; if(str == NULL) return -1; while(*end) end++; end -= 1; while(start < end) { ch = *start; *start++ = *end; *end-- = ch; } return 0; } int bigNumAdd(char *strNum1,char *strNum2, char *strRslt) // 大整数相乘 { int i,j, carry,t,rslt_index = 0; char chx, chy; if(strNum1 == NULL || strNum2 == NULL || strRslt == NULL) return -1; i = strlen(strNum1) - 1; j = strlen(strNum2) - 1; memset(strRslt, 0 ,((i > j) ? i : j) + 2);//把存放结果的空间先清零 carry = 0; while(i >= 0 || j >= 0) { chx = (i < 0)? 0:strNum1[i] - '0'; chy = (j < 0)? 0:strNum2[j] - '0'; t = chx + chy + carry;//从最低位开始计算 strRslt[rslt_index++] = t % 10 + '0'; carry = t / 10; i--; j--; } if(carry > 0) strRslt[rslt_index] += carry + '0'; revstr(strRslt); return 0; }