写下来,以备不时之需。
#define LENGTH 1005
#define LAST LENGTH-2
//函数要求sum的初始值均为0
char* IntegerAddition(char *a, char *b, char *sum)
{
int i, j, k, first;
//从末位开始,把a与b对应位的和存入sum中,暂不处理进位
for (i = strlen(a)-1, j = LAST; i >= 0; i--, j--)
{
sum[j] = a[i] - '0';
}
for (i = strlen(b)-1, k = LAST; i >= 0; i--, k--)
{
sum[k] += b[i] - '0';
}
//获取sum中结果的首位位置
first = j < k ? j : k;
//处理进位
for (i = LAST; i >= first; i--)
{
sum[i-1] += sum[i] / 10;
sum[i] = sum[i] % 10 + '0';
}
//去除前导'0'
while (sum[first] == '0' && first < LAST)
{
first++;
}
//返回sum的首位地址
return &sum[first];
}