数组形式整数加法

个人思路(错的)

1)数组先转换成整型的数
(可以用sizeof得出个数,再依靠个数得出10^sizeof(),将数组转换为整数)
2)数组转换的整数和原本整数相加,取余数放在原来的数组空间里
3)开辟一块新空间,把原来数组空间的值移到新空间里返回

问题
次方那块一直^,弄成按位与了。在c语言里,可以用循环,或者是pow()表示次方。
结果
不通过,原因是这种处理不了大数。

参考思路

1)数组形式相加,像加法一样。
2)求k的位数
3)开辟最大位数+1的动态空间
4)保存数据后逆置显示

听过思路,再写,增益点

1)取位数上的数字

我的很愚蠢的。取模后再除:
/while ((float)sum / (float)cur > 1) {
  cur = 10 * cur;
   num[i] = (sum % cur) / (cur / 10);
  i++;}

更好的思路,从最低位一个一个取出来:
    int Ksize = 0;
    int Kstore = k;
    while (Kstore)
    {
        Kstore /= 10;
        Ksize++;
    }//得到K的长度

2)为什么返回一个地址?
不仅要返回新创建数组的地址,还要把表示数组个数大小的解引用后传递回)。
3)开辟空间考虑谁打谁小

int len = Asize > Ksize ? Asize : Ksize;//谁长
 
int* NewArr = (int*)malloc(sizeof(int) * (len+1));//多开一位数

4)考虑数组位数小于整数

今早的事

今早做了一个岗位的机考测评
1)直接考了二叉树的数据结构,不会。
2)算法题就会一两个,后面看了,云里雾里,还要递归。现在头蒙蒙的。
总的来看,这些岗位的机考测评和那些网上的刷题还是挺像的,我如果还是继续学下去,得一两个月后才能说跳一跳能够到这些岗位的边边。

01-25 16:37