数组形式的整数加法
题干

首先是解题思路分析

具体代码
#include <stdio.h>
#include <stdlib.h>
int* addToArrayForm(int* num, int numSize, int k, int* returnSize) {
int KSize = 0;
int KNmu = k;
while(KNmu)
{
++KSize;
KNmu/=10;
}
int cap = (numSize > KSize ? numSize : KSize);
int* retARR = (int*)malloc(sizeof(int) * (cap+1));
int Ai = numSize-1;
int reti = 0;
int NextNum = 0;
while(cap--)
{
int a=0;
if(Ai >= 0)
{
a=num[Ai];
Ai--;
}
int ret = a + k%10 + NextNum;
k /= 10;
if(ret>9)
{
ret-=10;
NextNum = 1;
}
else
{
NextNum = 0;
}
retARR[reti++] = ret;
}
if(NextNum == 1)
{
retARR[reti++] = 1;
}
int left = 0;
int right = reti-1;
while(left<right)
{
int temp = retARR[left];
retARR[left] = retARR[right];
retARR[right] = temp;
++left;
--right;
}
*returnSize = reti;
return retARR;
}
int main() {
int num[] = {1, 2, 0, 0};
int numSize = sizeof(num) / sizeof(num[0]);
int k = 34;
printf("nihao ");
int returnSize;
int* result = addToArrayForm(num, numSize, k, &returnSize);
for (int i = 0; i < returnSize; i++) {
printf("%d ", result[i]);
}
free(result);
return 0;