- トップページ
- 特集PC技術
- Java言語入門 ~C言語を学んだ君へ~
- [第6回]演習問題Ⅰ
Java言語入門 ~C言語を学んだ君へ~
[第6回]演習問題Ⅰ
第6回は、第3回~第5回まで学習した内容を元に演習問題を解いてもらいます。
もしわからない場合には、前のページに戻り必要な情報を調べてください。調べるのも勉強の1つです。
目次
[1]演習問題Ⅰ 第1問
以下の指示に従ってプログラムを作成しなさい。
なおファイル名はEx06_01.javaとする。
作成にあたっての条件
1."0~100"までの素数を表示するプログラムを書きなさい。
素数とは1と自身以外の数以外で割り切れない正の整数のことを言います。
出力結果
[2]第1問解答
第1問解説
まさかとは思いますが、全てをSystem.out.println("");で表示はしていませんよね。
また、この問題を解く方法にはさまざまあると思います。
ここでは、その1例を紹介しておきます。
4行目:boolean f;
boolean型の変数fを宣言します。
このプログラムでは、この変数で素数であるかの判定をします。
5行目
ループを使って、2から100までの整数を取得します。
初期値がi=2になっているのは、1は素数でないため、対象から外しています。
6~12行目
まずは変数fをtrueに初期化します。そして、対象数値iを、2からi/2までの整数で割り続けます。
もし割り切れたならiは素数ではないため、fをfalseに変更してループを抜け出します。
13~15行目
fの値で素数であるか判定しています。
if文の場合trueだったら適正と判断します。
fがtrueだったら(素数だったら)System.out.println();を実行し値を表示。
fがfalseだったら(素数ではなかったら)System.out.println();を実行しない。
[3]演習問題Ⅰ 第2問
以下の指示に従ってプログラムを作成しなさい。
なお、ファイル名はEx06_02.javaとする。
作成にあたっての条件
底辺と高さを持つ3つの三角形の面積を求めて表示するプログラムを書きなさい。
1.底辺:3cm 高さ:4cm
2.底辺:10cm 高さ:10cm
3.底辺:2.5cm 高さ:8.5cm
出力結果
[4]第2問解答
第2問解説
ここに書かれているプログラムはあくまで1つの例です。
きちんと演算子で計算を行い、出力結果が出ていれば正解です。
配列とループを使うことで比較的すっきりしたプログラムを書くことができます。
3~7行目:2次元配列
3つの三角形の底辺と高さを2次元配列に格納します。
2次元配列を宣言する方法は
データ型 配列名[][] = { {..}, {..}, {..} };
でした。
9行目:計算結果を格納する変数
面積の計算結果を格納するために、変数resultを宣言します。
三角形の面積は整数だけで表示できるとは限らないのでdouble型を宣言しています。
9~13行目:for文で計算する
面積を計算して出力を行います。求める三角形は配列に格納したので、配列の長さ分だけループさせます。
配列の長さはdat.lengthでわかります。そして、変数resultに配列に格納した底辺と高さを使って面積を求めます。
一応書いておきますが、三角形の面積を求める公式は「底辺×高さ÷2」です。最後に結果を表示します。
[5]演習問題Ⅰ 第3問
以下のプログラムの赤線①と②の実行結果を予想しなさい。
問題のプログラム
[6]第3問解答
第3問解説
これは、配列の知識を確認する問題です。知っていたら簡単な問題です。
出力結果の1行目
これは問題ないでしょう。プログラムの最初で配列array1に格納した値を表示しているだけです。
出力結果の2行目
array1の内容を表示しています。
プログラム上ではarray1の内容を書き換えていないはずですが、1行目の出力結果と異なっています。
これは、array2で配列の内容を書き換えたためです。
問題プログラムの4行目でint array2[] = array1;を行っています。
これは、array1の内容をarray2にコピーしたのではなく、「同じ配列を参照する」という意味です。
そのため、array2で書き換えた結果がarray1に反映されたのです。C言語のポインタに似ています。
コメント
AshiYu
当方 C→Java なんで、参考になります。
第2問解説で「二次元配列を宣言する方法」は
データ型 配列名[][] = { {..}, {..} };
ではないでしょうか?原本は数値が3個書かれてますが。
2015年3月20日 20:12
ほぷしぃスタッフ
コメントありがとうございます。
「二次元配列を宣言する方法」ですが
データ型 配列名[][] = { {..}, {..} }
数値の個数と二次元には関係がありません。
一次元配列で数値が100個あったとしてもやはり一次元です。
今回の設問は3つの三角形なので3つ並べています。
2015年3月24日 12:32
コメントの投稿
トラックバックURL
http://www.isl.ne.jp/cgi-bin/mt/mt-tb.cgi/1074