半路轉職想成為工程師的我,真的很害怕學的東西只是皮毛,根本沒辦法上職場。

在網路上常常看到培訓班出來的人,面試被洗臉....

有其中一篇分享是:

一個面試官出了19*9的乘法表,排列的方式還要是

0, m, 1, m-1, 2, m-2…

就是像

1*1=1

1*9=9

1*2=2

1*8=8

1*3=3

1*7=7

1*4=4

1*6=6

1*5=5

然後到19

面試者最後是以失敗告終,詳細故事可以看這邊 : 當我們在學程式時,要學的到底是什麼?


於是我決定來挑戰這一題,看看自己學到現在有沒有搞懂各個函數的用法

目前也只學到迴圈,但有迴圈就可以寫乘法表了,所以來試試吧!

我先在紙上把這個乘法表的關係寫出來,分析出來的結構是

image

依據上面的例子,可以看出下一行的乘數是 10扣掉上一行的乘數

image

 

import java.util.Scanner;

public class MainClass {
    public static void main(String[] args) {
        for(int x = 1; x<20; x++){
            for(int i = 1; i<6; i++){
                int m = 10;
                System.out.println(x+"*"+i+"="+(i*x));
                if(i==5) continue;
                m-=i;
                System.out.println(x+"*"+m+"="+(x*m));
            }
            System.out.println();
        }
    }
}

image

其中一部分結果>>成功完成19*9乘法表

 

第二種方法,用一維陣列做

import java.util.Scanner;

public class MainClass {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        int arr[] = {1,9,2,8,3,7,4,6,5};
        int x ;
        for(x = 1; x<=19; x++){
            for(int i = 0; i<9; i++){
                System.out.println(x + "*" + arr[i] + "=" + x*arr[i]);
            }
        System.out.println("===========");
        }
    }
}

 

 

讓使用者可以自行輸入要幾乘幾的乘法表:

import java.util.Scanner;

public class MainClass {
    public static void main(String[] args) {
        //建立乘數陣列
        Scanner sc = new Scanner(System.in);
        System.out.print("請輸入乘數個數:");
        int num = sc.nextInt();
        int a = 1; //被乘數的排列規則
        int arr[] = new int[num];  //建立一個使用者輸入的長度的陣列
        for(int i = 1; i<= arr.length; i++){
            if(a==(num+1)/2){
                arr[i-1] = a;
                System.out.print(arr[i-1] + " ");
                break;
            }
            arr[i-1] = a;
            arr[i] = num+1-a;
            System.out.print(arr[i-1] + " "+ arr[i] + " ");
            i++;
            a++;
        }

        //輸入被乘數
        System.out.print("請輸入被乘數個數:");
        int input = sc.nextInt();
        for(int i = 1; i<=input; i++){
            for(int n = 0; n< arr.length; n++){
                System.out.println(i + "*" + arr[n] + "=" + i*arr[n]);
            }
            System.out.println("=========");
        }

    }
}

 

9/27 更新

public class MainClass {
    public static void main(String[] args) {
        for(int x = 1;x<20; x++) {
            for (int i = 1, j = 9; i <= j; i++, j--) {
                System.out.println(x+ "*" +i + "=" + x*i);
                if(i!=j) {
                    System.out.println(x + "*" + j + "=" + x * j);
                }
            }
            System.out.println("--------------");
        }
    }


}

讓使用者可以自行輸入要幾乘幾的乘法表(更新):

import java.util.Scanner;

public class MainClass {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        System.out.print("請輸入被乘數個數:");
        int x = sc.nextInt();
        System.out.print("請輸入乘數個數:");
        int y = sc.nextInt();
        for(int n = 1; n<=x; n++) {
            for (int i = 1, j = y; i <= j; i++, j--) {
                    if(i!=j){
                        System.out.println(n + "*" + i +"=" + (n*i) );
                    }
                System.out.println(n + "*" + j +"=" + (n*j) );
            }
            System.out.println("-----------");
        }

    }
}

 

arrow
arrow
    全站熱搜
    創作者介紹
    創作者 Lillian 的頭像
    Lillian

    安安的code日記

    Lillian 發表在 痞客邦 留言(0) 人氣()