Javaプログラミング基礎 演習問題

解答は

に提出しなさい。ソースファイル (〜.java) のみを提出。 提出は gFTP 等の ftp ソフトを用いて行うこと。

繰り返し (for 文(2))

いずれの問題も for 文を使った繰り返しのプログラムとして書きなさい。

問題1

下のような九九の表を出力するプログラムを書きなさい。 プログラム名は Kuku とする。

1 2 3 4 5 6 7 8 9
2 4 6 8 10 12 14 16 18
3 6 9 12 15 18 21 24 27
4 8 12 16 20 24 28 32 36
5 10 15 20 25 30 35 40 45
6 12 18 24 30 36 42 48 54
7 14 21 28 35 42 49 56 63
8 16 24 32 40 48 56 64 72
9 18 27 36 45 54 63 72 81

問題2

上の九九の表は、このままでは表としては見づらいので、 次のように各数字の桁をそろえて表示するように工夫しなさい。 プログラム名は Kuku2 とする。

 1  2  3  4  5  6  7  8  9
 2  4  6  8 10 12 14 16 18
 3  6  9 12 15 18 21 24 27
 4  8 12 16 20 24 28 32 36
 5 10 15 20 25 30 35 40 45
 6 12 18 24 30 36 42 48 54
 7 14 21 28 35 42 49 56 63
 8 16 24 32 40 48 56 64 72
 9 18 27 36 45 54 63 72 81

値が10未満であった場合は、 最初に空白を表示してから値を表示するようにすれば良い。

問題3

2 から100までの範囲にある素数をすべて表示するプログラムを書きなさい。 プログラム名は Prime100 とする。

このプログラムは例題のプログラムを改造し、素数を判定する for 文の外側に、 2, 3, 4, …, 100 の順に判定対象となる数を登場させる for 文を書き、2重の繰り返しとすればよい。

問題4

サイコロを3つふり、少なくとも2つのサイコロの目が一致する確率を求めなさい。 繰り返しによってすべての場合の目の並びを求め、 問題文の条件を満たす目の並びの数を数えることにより求める。 なお、現時点では小数点以下を含むような数 (実数) の計算方法は学んでいないので、 確率は分数 (「m / n」という形式) で表示すればよい。約分の必要はない。 プログラム名は Sai とする。

サイコロ 1 個をふって出る目は 1 から 6 の 6 通りである。 これを 1 つの for 文で表わす。 すべての目の並びは 3 重の for 文で生成することができる。

プログラムの概略は次のとおり。

for (サイコロ 1 をふって出る目を登場させる繰り返し) {
    for (サイコロ 2 をふって出る目を登場させる繰り返し) {
        for (サイコロ 3 をふって出る目を登場させる繰り返し) {
            (この繰り返しの中では 3 つのサイコロのすべての目の出方が登場することになる) 
            if (サイコロの2つの目が一致する場合) {
                「一致した回数」を 1 増やす
            }
            「目の数」を 1 増やす
        }
    }
}

「一致した数」と「目の数」を表示

なお、数学の問題として解くなら以下のようになる。

すべての目の並び - 目がすべて異なる場合の並び
1 - 1x(5/6)x(4/6) = 1 - 20/36 = 1 - 120/216 = 96/216 (= 0.44)