倒着输出

8 分钟

因为低位存在下标 0,真正的最高位在下标 len-1,所以输出要从数组末尾往前打印,才能得到人读的顺序。

// 先去掉高位多余的 0
while (len > 1 && c[len - 1] == 0) len--;
// 从高位往低位输出
for (int i = len - 1; i >= 0; i--)
    cout << c[i];
cout << '\n';

为什么会出现多余的零?减法里 ,高位算出来的两个 0 得去掉;加法里若把 len 估长了也会留下前导零。但要留一个底线:len > 1 这个条件保证结果恰好是 0 时还能打印出一个 0,不会把它也删掉变成空行。

坑:(1)去零的循环条件必须是 len > 1 而不是 len > 0,否则结果为 0 时输出为空;(2)别在数字中间去零,只去最高位那一串;(3)输出方向和存储方向相反,写反了会得到整个数字颠倒的错误答案。这一步和倒着存是配套的。

小纸条

为什么会出现多余的零?

登录 后可看答案

倒着输出 · 考级冲刺 · op599 课程