打印 99 乘法表

笔试编程题

2019年10月17日发布📑

实现 99 乘法表 。

输出样例:
1×1=1
1×2=2   2×2=4
1×3=3   2×3=6   3×3=9
1×4=4   2×4=8   3×4=12  4×4=16
1×5=5   2×5=10  3×5=15  4×5=20  5×5=25
1×6=6   2×6=12  3×6=18  4×6=24  5×6=30  6×6=36
1×7=7   2×7=14  3×7=21  4×7=28  5×7=35  6×7=42  7×7=49
1×8=8   2×8=16  3×8=24  4×8=32  5×8=40  6×8=48  7×8=56  8×8=64
1×9=9   2×9=18  3×9=27  4×9=36  5×9=45  6×9=54  7×9=63  8×9=72  9×9=81
当时情况

当时纸笔手写代码,写错了!

输出 99 乘法表

还写了个 int[][] table = new int[9][];,实际上根本用不到数组,直接双重循环输出就可以了。主要是此类编程练习做得太少了,还有就是手写代码的时候,没有得调试反馈,要思维更加缜密才可以,脑子当编译器用才可以。上面图片手写的代码是错的,内部循环条件判断错了,应该是 j <= i ,输出格式也错了,内部循环迭代的变量 j 应该作为每行每个式子的第一个乘数,外部循环的迭代变量 i 作为第二个乘数,还有应该是在行末才进行换行,而不是每输出一个式子就 Tab 并换行。改成下面这样就可以了:

for(int i = 0; i < 9; i++) {
    for(int j = 0; j <= i; j++) {
        if(i == j) System.out.printf("%d\u00d7%d=%d\t\n",j+1, i+1, (i+1)*(j+1));
        else System.out.printf("%d\u00d7%d=%d\t",j+1, i+1, (i+1)*(j+1));
    }
}
更直观的
for(int i = 1; i <= 9; i++) {
    for(int j = 1; j <= i; j++) {
        if(j == i)
            System.out.printf("%d\u00d7%d=%d\t\n", j,i,j*i); // \u00d7 是 × 号
        else 
            System.out.printf("%d×%d=%d\t", j,i,j*i); // × 号也可以直接写
    }
}

最近准备 OCA 做练习的过程加强了眼睛检查语法的能力,但主要是选择题。编程题,尤其是手写编程题又是另一回事了。所以,还是要加强练习。 【完】