00年度計算機プログラミングI(玉井)試験問題
1.次のJAVAプログラムを実行すると、どんな出力表示が得られるか。結果のみ示せ。ただし、xとyをJAVAの整数変換としたとき、x%yはxをyで割った余りを表す。
class Pattern() {
public static void main(String args[]){
for(i=0; i<4;i++){
for(j=0; j<4;j++){
if( (i+j) % 2 == 0)
for(k=0; k<4; k++)System.out.print("x");
else
for(k=0; k<4; k++)System.out.print("o");
}
System.out.println();
}
}
}
2.フィボナッチ数列とは、最初の2項がX0=0,X1=1ではじまり、反復公式
Xn=Xn-1+Xn-2
で定まる数列である。すなわち、0,1,1,2,3,5,8,13,…のように続く。正の整数nを与えられて、フィボナッチ数列の最初のn項(X0からXn-1まで)を求めて表示するPascalプログラムを書け。ただし配列は使わないこと。整数nはjavaの実行時に与えるものとする。すなわち、クラス名をたとえばFibonacciとすると、ktermで
> java Fibonacci 8
0 1 1 2 3 5 8 13
のように実行される。出力はとくに工夫しなくてもよい。例えば、1行に1つの値を表示して、毎回改行するようなものでもよい。
3.時刻1(h1時間m1分s1秒)と時刻2(h2時間m2分s2秒)とが与えられて、時刻1から時刻2までの経過時間を、XX時間XX分XX秒のように表示するプログラムを作れ。時刻2は時刻1より後であるとし、h1≦h2と仮定してよい(すなわち、24時制とし、日をまたがることは無いものとする)。プログラムの入力部分や出力部分は既に示してあるので、以下に示すプログラムの四角い枠の中に書くべき部分を記述すればよい。
class ElapsedTime {
public static void main(String args[]){
int s1,s2,sec,m1,m2,min,h1,h2,hour;
h1 = Integer.parseInt(args[0]);
m1 = Integer.parseInt(args[1]);
s1 = Integer.parseInt(args[2]);
h2 = Integer.parseInt(args[3]);
m2 = Integer.parseInt(args[4]);
s2 = Integer.parseInt(args[5]);
この部分を書くこと
if(hour<0)
System.out.println("Data error");
else
System.out.println(hour + "時間 " + min + "分 " + sec + "秒");
}
}
実行例は例えば次の通り。
> java ElapsedTime 3 45 37 5 30 18
1時間 44分 41秒
4.時刻を時と分で保持するオブジェクトのクラスを定義しなさい。時は0以上24未満、分は0以上60未満に保つようにする。クラス名はTimeとし、1つのコンストラクタと2つのメソッドを持つものとする。それらの仕様は以下の通り。
Time(int h,int m) h時m分の初期値を与えるコンストラクタ。
showTime() 保持している時刻を、XX時XX分と表示する。
after(int m) 保持している時刻を、m分後の時刻に変更する。mは0以上600以下。
public class TestTime {
public static void main(String args[]){
Time t = new Time(11,15);
t.showTime();
t.after(90);
t.showTime();
}
}
この実行例を示す。
>java TestTime
11時15分
12時45分