問題 1

以下のプログラムを読んで問題に答えよ。

 

package j1.exam01;

import java.io.*;

public class A01 {

    public static void main(String[] args) throws IOException {

        BufferedReader reader

= new BufferedReader(new InputStreamReader(System.in));

        System.out.print("input> ");

        int n = Integer.parseInt(reader.readLine());

        int total = 1;

        for (int i=0; i<n; i++) {

            total *= 2;

        }

        System.out.println(total);

    }

}

 

 

次の文はこのプログラムの概要を説明するものである。

この概要に沿ってプログラム内の空欄を埋めよ。

 

ユーザが入力した整数nに対し、2n乗を計算し表示する

プログラム。ただし、n0未満の場合は考慮しない。
問題 2

以下のプログラムを読んで問題に答えよ。

 

package j1.exam01;

import java.io.*;

public class A02 {

    public static void main(String[] args) throws IOException {

        BufferedReader reader

= new BufferedReader(new InputStreamReader(System.in));

        System.out.print("入力(1):");

        int a = Integer.parseInt(reader.readLine());

        System.out.print("入力(2):");

        int b = Integer.parseInt(reader.readLine());

        System.out.print("入力(3):");

        int c = Integer.parseInt(reader.readLine());

        System.out.print("入力(4):");

        int d = Integer.parseInt(reader.readLine());

        int t1, t2;

        if (b*b > a*a)

            t1 = a;

        else

            t1 = b;

        if (d*d > c*c)

            t2 = c;

        else

            t2 = d;

        if (t1*t1 > t2*t2)

            System.out.println(t2);

        else

            System.out.println(t1);

    }

}

 

次の文はこのプログラムの概要を説明するものである。

この概要に沿ってプログラム内の空欄を埋めよ。

 

ユーザが入力した4つの整数(負の数や0の可能性もある)の中で、0に一番近いのもの(たとえば,その二乗が一番小さい数と考えるとよい)を表示するプログラム。
問題 3

以下のプログラムが問題2のプログラムと同じ結果を出力するように、空欄を埋めよ。

 

package j1.exam01;

import java.io.*;

public class B01 {

    public static void main(String[] args) throws IOException {

        BufferedReader reader

= new BufferedReader(new InputStreamReader(System.in));

        System.out.print("入力(1):");

        int a = Integer.parseInt(reader.readLine());

        System.out.print("入力(2):");

        int b = Integer.parseInt(reader.readLine());

        System.out.print("入力(3):");

        int c = Integer.parseInt(reader.readLine());

        System.out.print("入力(4):");

        int d = Integer.parseInt(reader.readLine());

        int t = a;

        if (t*t > b*b)

            t = b;

        if (t*t > c*c)

            t = c;

        if (t*t > d*d)

            t = d;

        System.out.println(t);

    }

}


問題 4

以下のプログラムを読んで問題に答えよ。

 

package j1.exam01;

public class B02 {

    public static void main(String[] args) {

        for (int i = 1; i <= 50; i++) {

            if (i % 10 == i / 10) {

                System.out.println(i);

            }

        }

    }

}

 

次の文はこのプログラムの概要を説明するものである。

空欄に適切な語を入れて完成させよ。

ただし,i/10あるいはi%10という式,商あるいは剰余という言葉を空欄に入れてはいけない。

1から50までの整数のうち1の位の数10の位の数が等しい整数を表示するプログラム。

 

ただし、演算子 % は剰余(割った余り)を計算する演算子である。
問題 5

以下のプログラムが問題4のプログラムと同じ結果を出力するように、空欄を埋めよ。

 

package j1.exam01;

public class C01 {

    public static void main(String[] args) {

        for (int i = 0; i < 40 ; i += 11) {

            System.out.println(i + 11);

        }

    }

}


問題 6

以下のプログラムを読んで問題に答えよ。

 

package j1.exam01;

 

public class C02 {

    public static void main(String[] args) {

        for (int i=1; i<=9; i++) {

            for (int j=1; j<=i; j++) {

                System.out.print("-");

                int col = i * j;

                if (col < 10)

                    System.out.print("-");

                System.out.print(col);

            }

            System.out.println("-");

        }

    }

}

 

上記のプログラムを実行したら、以下のように表示された。

 

--1-

--2--4-

--3--6--9-

--4--8-12-16-

--5-10-15-20-25-

--6-12-18-24-30-36-

--7-14-21-28-35-42-49-

--8-16-24-32-40-48-56-64-

--9-18-27-36-45-54-63-72-81-

 

この表示が行われるように、プログラム内の空欄を埋めよ。
問題 7

以下のプログラムを読んで問題に答えよ。

 

package j1.exam01;

import java.io.*;

public class C03 {

    public static void main(String[] args) throws IOException {

        BufferedReader reader

= new BufferedReader(new InputStreamReader(System.in));

        System.out.print("生徒の人数を入力:");

        int students = Integer.parseInt(reader.readLine());

        System.out.print("日直の人数を入力:");

        int dayOn = Integer.parseInt(reader.readLine());

        int permutation = 1;

        for (int i = students; i > students - dayOn; i--) {

            permutation *= i;

        }

        int factorial = 1;

        for (int i = 1; i <= dayOn; i++) {

            factorial *= i;

        }

        int combination = permutation / factorial;

        System.out.println("組み合わせの数は" + combination + "通り");

    }

}

 

次の文はこのプログラムの概要を説明するものである。

この概要に沿ってプログラム内の空欄を埋めよ。

 

生徒の人数と、その生徒の中から選ばれる日直の人数を入力させ、

その組み合わせの数を計算し表示するプログラム。
問題 7 に対するヒント

 

生徒の人数がn人で、日直の人数をr人とすると、生徒の中から日直を選ぶ組み合わせの数 C は以下の式で求められる。

 

C = n! / ((n-r)! * r!) = n * (n-1) * ... * (n-r+1) / r!

 

n! nの階乗を表すものとし、nの階乗は以下の式で表される。

 

n! = n * (n-1) * ... * 1

1! = 1

0! = 1