倒着存数字

10 分钟

高精度第一个约定俗成的技巧:低位在前。把个位放进 a[0],十位放 a[1],以此类推。数字 123 存进数组就是 a[0]=3, a[1]=2, a[2]=1

为什么要倒着存?因为竖式计算的进位总是从个位(低位)流向高位。倒着存之后,低位下标小、高位下标大,进位方向和数组下标增长方向一致,循环从 i=0 往大写就行;而且结果变长时(比如 ),直接在数组末尾追加新的一位,不用把整个数组往后挪。

// 999 + 1 时,进位一路从 a[0] 顶到需要新增的一位
int a[10] = {9, 9, 9};  // 表示 999,低位在前
int len = 3;
// 末尾自然扩展出 a[3]=1,得到 1000(存为 0 0 0 1)

如果正着存,进位要往下标变小的方向走,还得预留高位空间,写起来别扭还容易错。所以从今往后所有高精度都默认倒着存。坑:输出时记得再倒回来,从高位往低位打印。

小纸条

数字 123 倒着存进数组是什么样?

登录 后可看答案

倒着存数字 · 考级冲刺 · op599 课程