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

解答は

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

繰り返し (for 文)

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

問題1

int 型変数 n を用意し適当な値を代入しておく。 その整数の階乗 n! を求めるプログラムを書きなさい。 プログラム名は Factorial とする。

n! = 1 × 2 × 3 × … × n

である。例題の 1 つめのプログラムと同じ考え方で書けるはずである。

n ≧ 13 になると正しい値が求まらなくなるが、 これは int 型整数の扱える範囲を越えるためである。 今回はこれで仕方ないとする。

問題2

問題1の階乗を求めるプログラムを元に、

n! / ( m! * (n - m)! )

を計算して表示するプログラムを書きなさい。 あらかじめ適当な値を nm に代入しておき、 まず、nm の階乗を計算する。 階乗は for 文による繰り返しで計算すること。

なお、この式は、 n 個の中から m 個を選ぶ組み合わせの数 nm を求めるものである。

プログラム名は PrimitiveCombination とする。

問題3

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 回行う) 記述すること。

問題4

等差数列の項と和を求めるプログラムを書きなさい。

初項 c 、項差 d の等差数列を考えると、 i番目の項 ai と、その項までの和 si は以下のような漸化式で求めることができる。

ai = ai-1 + d
si = si-1 + ai

初項 c と公差 d をあらかじめプログラム中に定義しておき、 先頭から第 10 項までの aisi を出力するようなプログラムにすること。 たとえば、初項が 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 とする。