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

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

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

変数と四則演算

問題1

文字を並べて画面上に絵を描くプログラムを書きなさい。 プログラムを実行したとき、例えば次のような文字を並べた絵が表示されれば良い。 プログラムの名前は AsciiArt とし、ファイル名は AsciiArt.java とする。

           ##
         ######
       ###    ###
     ###        ###
   ###            ###
 ######################
   #                #
   #                #
   #  +--+  +--+--+ #
   #  |  |  |  |  | #
   #  |  |  +--+--+ #
   #  |  |  |  |  | #
   #  |  |  +--+--+ #
 ======================

問題2

わざとエラーを入れたプログラムを用意してある。 このプログラムをダウンロードし Errors.java という名前で保存し、 エラーをすべて修正して、正しく実行できるように直しなさい。

[ダウンロード]

プログラムの中身は次のようなものである。

class Error {
   pablic static void maine(String[] args) 
        System.out.pnintln("*****************************")
        System.out.println("*                           *");
        System.out.println('*                           *");
        System.out.println("*                           *);
        System.out,println("*                           *");
        System.out.println{"*                           *"};
        System.out.println("*****************************"):
   }                                                                          
}

問題3

3つの int 型変数を用意し適当な値を入れ、 この3つの整数の平均を表示するプログラムを書きなさい。

プログラム名を Average とし ファイル名を Average.java としたとき、プログラムの概略は次のようになる。

問題4

2 つの変数 a, b の内容を入れ替えるプログラムを作りたい。 ここで、次のようなプログラムを考えてみよう。

class SwapAandB {
     public static void main(String[] args) {
          int a = 2;
          int b = 8;

          a = b;
          b = a;

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

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

ところが、このプログラムをコンパイルし実行してみると、 a=8, b=8 となってしまい入れ換えがうまくできないことがわかる。 "a = b;" の行で ab の値で上書きすると 元の a の値が失われてしまうからである。

そこで ab の値で上書きする前に、 元の a の値を一旦別の変数 temp に保存することを考えてみる。 temp に元の a の値が保存されていれば、 "a = b;" のあとで btemp の値を代入すれば良い。

プログラムの概略は次のようになる。 プログラム名は同様に SwapAandB とする。

class SwapAandB {
     public static void main(String[] args) {
          int a = 2;
          int b = 8;
          int temp;

          /* 変数を入れ替える処理をここに書く */

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

上のプログラムが正しく動くように完成させなさい。 必要な処理を記述しコンパイル・実行したとき、 a=8, b=2 のように表示されれば良い。

問題5

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

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

ここで、n! を (n - 1)! 使って書くと次のような式になる。

n! = (n - 1)! × n

これを用いると、n! を計算するときに、 1 つ前で求めた (n - 1)! を利用することができるので 計算が簡単になる。

class PrimitiveFactorial {
     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 が 12 になるまで繰り返すこと。

プログラム名は PrimitiveFactorial とし、 ファイル名は PrimitiveFactorial.java とする。

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

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

          System.out.println(Integer.MAX_VALUE);