コンピュータ基礎および演習II

演習問題 (中級・上級)

解答は earth.mlab.im.dendai.ac.jp/home/submit/1I-Computer2/[初級の出題日]/[学籍番号] のディレクトリに提出しなさい。 ソースファイル (〜.java) のみを提出すること。

ファイルの送信には ftp ソフトを用いる。 Linux の gFTP を使った提出方法 (実験室のマニュアル) を参照すること。

- 変数と四則演算

問題1

半径 r の円の面積と円周を求め、 その結果を画面に表示するプログラムを作成しなさい。 ただし、r は整数の値とし、その初期値は 5 とする。 円周率は 3 とする。

プログラム名(クラス名)は AreaAndOutlineOfCircle、 提出ファイル名は AreaAndOutlineOfCircle.java とする。

問題2

0 から 2 までの間の偶数の和、
0 から 4 までの間の偶数の和、
...
0 から 10 までの間の偶数の和
をすべて表示するプログラムを作成しなさい。

プログラム名は SumOfEvenNumbers とする。ファイル名は SumOfEvenNumbers.java となる。

問題3

整数 n の階乗 n! を、n = 1,2,3,... について求めるプログラムを作成する。 階乗の定義は以下の通り。

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

なお、(n - 1 )! を用いると次のように書ける。

n! = (n - 1 )! × n

これを用いると、n! を計算するときに、 すでに求めている (n - 1 )! を利用することができるので効率的である。

class Factorial {
     public static void main(String[] args) {
          int n = 1;
          int factorial = 1;
          System.out.println(n + "! = " + factorial);

          n = ...
          factorial = ...
          System.out.println(n + "! = " + factorial);

          (繰り返す)

     }
}

変数 n の値を 1 ずつ増やして、その時の nの階乗の値を計算して 変数 factorial に入れる、という処理を繰り返す。 n が 15 になるまで繰り返すこと。

ファイル名は Factorial.java とする。

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

参考: 以下のようにすると int 型変数で扱える最大値が表示される。

          System.out.println(Integer.MAX_VALUE);

問題4

3 つの変数 a, b, c の内容を入れ替え、 aの値をbに、 bの値をcに、 cの値をaに移動させるプログラムを作成しなさい。

a, b, c の初期値をそれぞれ 1,2,3 とし、 上記の入れ替えを2回実行しなさい。 各変数の内容は以下の表のようになるはずである。

 abc
実行前123
1回実行後312
2回実行後231

プログラム名を RotateABC とすると、プログラムの骨格は以下のようになる。

class RotateABC {
     public static void main(String[] args) {
          int a = 1;
          int b = 2;
          int c = 3;
          (必要であれば他の変数の宣言を記述)

          System.out.println("a=" + a + ", b=" + b + ", c=" + c);

          (ここで1回目の入れ替え)

          System.out.println("a=" + a + ", b=" + b + ", c=" + c);

          (ここで2回目の入れ替え)

          System.out.println("a=" + a + ", b=" + b + ", c=" + c);
     }
}

ファイル名は RotateABC.java とする。