2016年12月24日 星期六

常考的面試題:九九乘法

首先一般都是用for迴圈,使用兩個迴圈,都是從1跑到9,變數當然不同,然後九九乘法就出來了,但如果只要顯示其中一個角,就要在上面判斷了,如下:

※橫式

for (int i = 1; i <= 9; i++) {
    for (int j = 1; j <= 9; j++) {
        // 右上
        /*
            if (i > j) {
                sevenSpace();
                continue;
            }
        */
    
        // 左下,但使用for (int j = 1; j <= i; j++)效能較好
        if (j > i) {
            continue;
        }
    
        // 左上
        /*
            if (i + j == 11) {
                break;
            }
        */
        
        // 右下
        /*
            if (i + j < 10) {
                sevenSpace();
                continue;
            }
        */
    
        System.out.printf("%dx%d=%2d|", i, j, i * j);
    }
    System.out.println("");
}
    
private static void sevenSpace() {
    for (int k = 1; k <= 7; k++) {
        System.out.print(" ");
    }
}




※直式

就是3x3格式,先寫最右邊的1到9會,然後顯示時再調整一下會比較好寫

int x = 1;
for (int k = 1; k <= 3; k++) {
    for (int j = 1; j <= 9; j++) {
        for (int i = x; i < x + 3; i++) {
            // System.out.println(i + " " + j);
            System.out.printf("%dx%d=%2d|", i, j, i * j);
        }
        System.out.println();
    }
    x = x + 3;
    System.out.println("---------------------");
}




※一個迴圈

for (int i = 1, j = 1; j <= 9; j++) {
    System.out.printf("%dx%d=%2d|", i, j, i * j);
    if (j == 9) {
        System.out.println();
        i++;
        j = 0;
        if (i == 10) {
            break;
        }
    }
}




沒有留言:

張貼留言