解答は
- ホスト: earth.mlab.im.dendai.ac.jp
- ディレクトリ: /home/submit/JavaBasic/[今日の日付]/[学籍番号]
に提出しなさい。ソースファイル (〜.java) のみを提出してください。 提出は gFTP 等の ftp ソフトを用いて行うこと。
いずれの問題も for 文を使った繰り返しのプログラムとして書きなさい。
int 型変数 n
を用意し適当な値を代入しておく。
その整数の階乗 n! を求めるプログラムを書きなさい。
プログラム名は Factorial とする。
n! = 1 × 2 × 3 × … × n
である。例題の 1 つめのプログラムと同じ考え方で書けるはずである。
n ≧ 13 になると正しい値が求まらなくなるが、 これは int 型整数の扱える範囲を越えるためである。 今回はこれで仕方ないとする。
1 ≦ n ≦ 10 の整数 n について、 n , 2n, 3n を一覧表の形で出力するプログラムを書きなさい。 プログラム名は Power2n3n とする。
出力の最初の数行は次のようになるように作ること。
1: 2^1=2 3^1=3 2: 2^2=4 3^2=9 3: 2^3=8 3^3=27 4: 2^4=16 3^4=81 ...
なお、BASIC や Excel では 「 n の m 乗」を計算するために「n ^ m」というような書き方ができるが、 Java では、演算子 ^ はこのような意味では使用できない。 べき乗の計算は、掛け算として (n の m 乗であれば、 n × n の掛け算を m 回行う) 記述すること。
等差数列の項と和を求めるプログラムを書きなさい。
初項 c 、項差 d の等差数列を考えると、 i番目の項 ai と、その項までの和 si は以下のような漸化式で求めることができる。
ai = ai-1 + d
si = si-1 + ai
初項 c と公差 d をあらかじめプログラム中に定義しておき、 先頭から第 10 項までの ai と si を出力するようなプログラムにすること。 たとえば、初項が 10 、公差が 5 だった場合、出力の最初の数行は次のようになれば良い。
ArithmeticalProgression (c=10, d=5) 1: a=10 s=10 2: a=15 s=25 3: a=20 s=45 4: a=25 s=70 5: a=30 s=100 ...
プログラム名は ArithmeticalProgression とする。
下のような九九の表を出力するプログラムを書きなさい。 プログラム名は 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
サイコロを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)