核心思想:利用数组处理每位
int* bignumPlus(char *a1, char *b1){
int a[10000], b[10000], c[10000];
int flag, len_a, len_b, len_c;
memset(a, 0, sizeof(a));
memset(b, 0, sizeof(b));
memset(c, 0, sizeof(c));
//scanf("%s,%s", &a1, &b1);
len_a = strlen(a1);
len_b = strlen(b1);
//将数字倒序处理
for (int i = 0; i < len_a; i++){
a[len_a - i - 1] = a1[i] - '0';
}
for (int i = 0; i < len_b; i++){
b[len_b - i - 1] = b1[i] - '0';
}
//每位进行相加,进位处理
flag = 0;//进位标志
len_c = 0;
for (len_c = 0; len_c < len_a || len_c < len_b; len_c++){
c[len_c] = a[len_c] + b[len_c] + flag;
flag = c[len_c] / 10;
c[len_c] %= 10;
}
if (flag != 0) c[len_c] = flag;
else len_c--;
c[len_c + 1] = '\0';
//将数字倒序处理
for (int i = 0, j = len_c; i < j; i++, j--){
int tmp;
tmp = c[i];
c[i] = c[j];
c[j] = tmp;
}
return c;
}