問題 1 次の設問 1~5 に答えよ 設問 1. Java のソースプログラムをコンパイルするコマンドはどれか a) java b) javac c) javadoc d) jdb 設問 2. Java のバイトコード ( コンパイル結果 ) を実行するコマンドはどれか a) java b) javac c) javadoc d) jdb 設問 3. Java のソースプログラムの拡張子はどれか a).c b).java c).class d).jar 設問 4. Java のバイトコードの拡張子はどれか a).c b).java c).class d).jar 設問 5. 以下のプログラムの出力はどれか public class HelloWorld { public static void main(string[] args){ System.out.println("Hello"); System.out.println("World"); a) Hello World b) World Hello c) Hello d) World World Hello 問題 2 次の設問 1,2 に答えよ 設問 1 int 型の変数 a, b を比較して a が b より大きい場合は "a は b より大きい " a と b が等しい場合は "a と b は等しい " a が b より小さい場合は "a は b より小さい " と表示させるたい 以下はこのような処理を行う JAVA プログラムの一部である 空欄に入るべき文字列は何か if( 1 ) { System.out.println("a は b より大きい "); else if( 2 ) { System.out.println("a と b は等しい "); else { System.out.println("a は b より小さい "); 設問 2 以下のプログラム 1,2 は 何れも 100 回ループするような処理を行う JAVA プログラムの一部である 空欄に入るべき文字列は何か プログラム 1 4 ( int i = 0; 3 < 100; 3 ++ ) { System.out.println(i+" 回目 "); プログラム 2 int i = 0; do { System.out.println(i+" 回目 "); 3 ++; 5 ( 3 < 100 ); 1
2010/6/2 OOP 同演習小テスト問題問題 3 次に設問 1~5のプログラムを実行した時の画面に表示される値を答えよ 設問 1 public class Prog3_1 { System.out.println(3 * 4-6 / 4); 設問 2 public class Prog3_2 { int x = 5; int y = 10; int z; z = y; y = x; x = z; System.out.println("x="+x+",y="+y); 設問 3 public class Prog3_3 { int s = 0; for(int i=0; i<6; i++){ for(int j=0; j<4; j++){ s = s + 1; System.out.println("s="+s); 設問 4 public class Prog3_4 { int i = 1; int s = 0; while(i<1){ s = s + 1; i = i * 2; System.out.println("s="+s); 設問 5 public class Prog3_5 { int i = 1; int s = 0; while(i<80){ s = s + 1; i = i * 2; System.out.println("s="+s); 2
問題 4 次に設問 1~4 の 2010/6/2 OOP 同演習小テスト問題 を解答群から選んで, プログラムを完成させよ 設問 1. 変数 a が 3 以下または 7 以上の場合 true と表示し そうでない場合は false と表示するプログラムである 5 true public class Prog4_1 { public static void main(string[] args) throws IOException { BufferedReader buf = new BufferedReader(new InputStreamReader(System.in)); int a; boolean b; a = Integer.parseInt(buf.readLine()); b = 1 ; System.out.println(b); 設問 2. 整数型の配列に格納されたデータの総和を計算し, その結果を出力するプログラムである このプログラムの処理手順を次に示す 1 配列の格納するデータの個数 n (n>0) を入力する 2n の大きさで配列を確保する 3 配列に n 個分のデータを格納する 4 配列の総和を求める 5 総和を出力する 4 6 2 7 8 総和 = 23 public class Prog4_2{ public static void main(string[] args) throws IOException{ BufferedReader buf = new BufferedReader(new InputStreamReader(System.in)); int n = Integer.parseInt(buf.readLine()); // データの個数を標準入力より取得 int [] a = 2 int[n]; int sum = 0; for (int i = 0; i < n; i++){ // 入力データのカウント a[i] = Integer.parseInt(buf. 3 ()); for (int i = 0; i < n; i++){ // 総和の計算 4 +=a[i]; System.out.println(" 総和 = "+sum); 設問 3. 実数型のデータを入力して, 平均値, 最大値と最後に現れた最大値の番号, 最小値と最初に現れた最小値の番号を出力するプログラムを完成させよ 処理は,0 のデータが入力された時に終了するものとする x1 = 7 x2 = 9 x3 = 5 x4 = 3 x5 = 4 x6 = 5 x7 = 0 3
平均値 :5.5 最大値 :9.0 最後に現れた最大値 9.0 は 2 番目最小値 :3.0 最初に現れた最小値 3.0 は 4 番目 public class Prog4_3 { // 初期設定 BufferedReader in = new BufferedReader(new InputStreamReader(System.in)); double sum = 0.0; double max = 0.0; double min = 0.0; int num = 0; int locationofmax = 0; int locationofmin = 0; // データの読み込みと計算 while( 5 ) { System.out.print("x"+(num+1)+" = "); double x = (new Double(in.readLine())).doubleValue(); if(x == 0.0) { break; if(num==0){ max = x; min = x; 6 ; 7 ; ++num; if( 8 ) { max = x; locationofmax = num; if( 9 ) { min = x; locationofmin = num; // 結果の出力 System.out.println(" 平均値 :" + 10 ); System.out.println(" 最大値 :" + max); System.out.println(" 最後に現れた最大値 " + max + " は " + locationofmax + " 番目 "); System.out.println(" 最小値 :" + min); System.out.println(" 最初に現れた最小値 " + min + " は " + locationofmin + " 番目 "); 設問 4.n( 入力 ) 人の英語, 及び, 数学の点を入力し, 各科目の平均点を計算した後 ( 平均点も出力 ), どちらかの科目が平均点以下の人の数を出力するプログラムを完成させよ 人数は? 3 1 番目の人の英語の点は? 60 1 番目の人の数学の点は? 80 2 番目の人の英語の点は? 50 2 番目の人の数学の点は? 40 3 番目の人の英語の点は? 80 3 番目の人の数学の点は? 90 英語 =63.333333333333336 数学 =70.0 平均点以下の人数は 2 人 public class Prog4_4{ public static void main(string args[]) throws IOException{ BufferedReader in = new BufferedReader(new InputStreamReader(System.in)); double mean1, mean2, sum1, sum2; int n, i1, kazu; // 初期設定 sum1 = 0.0; sum2 = 0.0; kazu = 0; // データ数の読み込みと配列領域確保 System.out.print(" 人数は? "); n = Integer.parseInt(in.readLine()); double x[] = new double [n]; double y[] = new double [n]; 4
2010/6/2 OOP 同演習小テスト問題 // データの読み込み for (i1 = 0; 11 ; i1++) { System.out.print((i1+1) + " 番目の人の英語の点は? "); x[i1] = Double.parseDouble(in.readLine()); System.out.print((i1+1) + " 番目の人の数学の点は? "); y[i1] = Double.parseDouble(in.readLine()); sum1 += 12 ; sum2 += 13 ; // 結果の計算と出力 if ( 14 ) System.out.println(" データがない!"); else { mean1 = sum1 / n; mean2 = sum2 / n; System.out.println(" 英語 =" + mean1 + " 数学 =" + mean2); for (i1 = 0; i1 < n; i1++) { if ( 15 ) kazu++; System.out.println(" 平均点以下の人数は " + kazu + " 人 "); 問題 4 解答群 ア (a <= 3) && (a >= 7) イ (a <= 3) (a >= 7) ウ (a >= 3) && (a <= 7) エ (a >= 3) (a <= 7) オ カ キ false i1 < n i1 <= n ク locationofmin = 1 ケ コ サ シ ス max < x max <= x min > x min >= x new セ n <= 0 ソ n < 0 タ チ ツ テ ト ナ ニ ヌ ネ ノ ハ readline sum sum += x sum / num true x[i1] y[i1] x[i1] < mean1 && y[i1] < mean2 x[i1] < mean1 y[i1] < mean2 x[i1] <= mean1 && y[i1] <= mean2 x[i1] <= mean1 y[i1] <= mean2 5
問題 5 次に設問 1~4 の空欄 に解答群から適切なものを選べ 設問 1 条件式? 式 1: 式 2 で与えられる演算子を条件演算子という 意味は 条件式の評価結果が真であれば式 1 を実行し 偽となれば式 2 を実行する というものである 次の実行結果となるようにプログラムを完成させよ 条件演算子の実行結果 :100 public class Prog5_1{ public static void main(string[] args){ int n1=100, n2=200, n3; 1 System.out.println(" 条件演算子の実行結果 :"+ n3); 設問 1 解答群 ア n3 = n2 > n1? n2:n1; イ ウ エ n3 = n2!= n1? n2:n1; n3 = n2 < n1? n2:n1; n3 = n2 >= n1? n2:n1; 設問 2 次の実行結果となるように プログラム群 a~e を並び替えて プログラムを完成させよ 100 33 1 33.333332 33.0 33.333333333333336 public class Prog5_2{ public static void main(string args[]){ int n1 = -100; int n2 = -n1; System.out.println(n2); 2 プログラム群 int q = n2/3; System.out.println(q); double r =(double)(n2/ 3); System.out.println(r); double t =(double)n2/ 3.0; System.out.println(t); int e = n2 % 3; System.out.println(e); float w =( float)n2/ 3; System.out.println(w); 設問 2 解答群 アイウエ a d e b c c b e d a a d c b e e d a c b 6
設問 3 文字列の中から任意の文字を検索し, 検出した文字列中の文字の場所を出力するプログラムである 次の処理の 流れとなるようにプログラム群 a~e を用いてプログラムの完成させる場合, プログラムの構成順序として正しい 答えは 3 である 処理の流れ 1 文字列を入力する 2 検索文字を入力する 3 文字を検出したら, その場所を出力する 43 の処理を文字列の最後まで続ける 5 検出されなかった場合は," 検索文字なし " と出力する 文字列 = asdfghffdfgghf 検索文字 = g 検出場所 :5 11 12 プログラム群 System.out.print(" 文字列 = "); a String s = in.readline(); b public class Prog5_3 { c System.out.print(" 検出場所 :"); d for (int i = 0; i < s.length(); i++){ // 入力データのカウント e if(ch == s.charat(i)) { f System.out.print(" 検索文字 = "); g char ch = in.readline().charat(0); if(!flag) { System.out.print(" 検索文字なし "); System.out.println(" "); h System.out.print((i+1)+" "); i flag = true; j BufferedReader in = new BufferedReader(new InputStreamReader(System.in)); boolean flag = false; 設問 3 解答群 ア b j a g c d e f i h イウエオカ b j a g c d e i f h b j a g d c e f i h b j g a c d e i f h j b a g c d e f i h j b a g d c e f i h 7
2010/6/2 OOP 同演習小テスト問題設問 4 n 個の整数型データを入力し, 降順 ( 大きい順 ) に並び替える ( ソートする ) プログラムである プログラムの 4a~4c に入るプログラムとして正しい答えを解答群 1,5 に入るプログラムとして正しい答えを解答群 2から選べ このプログラムの処理の流れを次に示す 処理の流れ 1 配列の格納するデータの個数 n (n>0) を入力する 2n の大きさで配列を確保する 3 配列に n 個分のデータを入力する 4 入力したデータを出力する 5 降順に並び替える 6 結果を出力する 入力データ数 =8 data1=34 data2=65 data3=87 data4=32 data5=45 data6=98 data7=76 data8=89 入力データ = 1:34 2:65 3:87 4:32 5:45 6:98 7:76 8:89 ソート結果 = 1:98 2:89 3:87 4:76 5:65 6:45 7:34 8:32 public class Prog5_4 { public static void main( String[] args ) throws Exception { // 標準入力からデータの個数を入力 // データの入力 4a 4b // 入力データの出力 4c // 並び替えの処理 int tmp=0; // 作業領域 for( int i=0; i<data.length-1; i++ ) { for( int j=0; j<data.length-i-1; j++ ) { if( data[j] < data[j+1] ) { 5 // ソート結果の出力 System.out.print(" ソート結果 = "); for( int i=0; i<data.length; i++ ) { System.out.print( " "+(i+1) + ":" + data[i] ); System.out.println(" "); 8
設問 4 解答群 1 for (int i = 0; i < n; i++){ System.out.print("data"+(i+1) + "="); ア data[i] = Integer.parseInt(buf.readLine()); BufferedReader buf = new BufferedReader(new InputStreamReader(System.in)); System.out.print(" 入力データ数 = "); イ int n = Integer.parseInt(buf.readLine()); int [] data = new int[n]; System.out.print(" 入力データ = "); for( int i=0; i<data.length; i++ ) { ウ System.out.print( " "+(i+1) + ":" + data[i] ); System.out.println(" "); 設問 4 解答群 2 アイウエ tmp = data[j]; data[j+1] = tmp; data[j] = data[j+1]; tmp = data[i]; data[i+1] = tmp; data[i] = data[i+1]; tmp = data[i]; data[i] = data[i+1]; data[i+1] = tmp; tmp = data[j]; data[j] = data[j+1]; data[j+1] = tmp; 9