多次元配列も解説しました。12月になりましたので期末テストよろしく今年最後の実力確認テストを実施します。最後のテストは今までより難易度を上げている、本ブログ掲載専用のオリジナル問題です。これが出来ると世界が一気に広がります。では、いってみましょう!


  • 問16. 合計点と平均点
国語、算数、理科、社会の四つの教科の得点を格納する配列を宣言する。それぞれ一つずつ、得点をユーザーに入力させる。ループを使って全ての得点の合計点を求める。その合計点と平均点を表示する。平均点の表示は小数点以下1桁とする。
問16.合計点と平均点


  • 問17-1. ループで文字数カウント
配列 szBuf を用意する。要素数は128としておく。キーボードから何か文字を入力させ、その入力された文字数を表示する。方法としては、入力させた文字列は、最後が \\0になっているため、最初から \\0 までの \\0 以外の数を数えると良い。


  • 問17-2. ライブラリで文字数カウント
配列 szBuf を用意する。要素数は128としておく。キーボードから何か文字を入力させ、その入力された文字数を表示する。方法としては、strlen() 関数を使用する。strlen() 関数を使用する場合は、#include <string.h> を指定しておく。


  • 問17-3. 画面表示で文字数カウント
配列 szBuf を用意する。要素数は128としておく。キーボードから何か文字を入力させ、その入力された文字数を表示する。方法としては、printfで文字列を表示させた戻り値が表示した文字数になる事を利用する。
問17.文字数カウント
<Tips!>
上記問17の3問は全て表示上の結果は同一となる。
※ めっちゃ気になってるゲーム。単純明快なのが良いですね!

  • 問18-1. 敵船の配置
配列 szSea を 11×9 のサイズで用意する。そこにランダムで空母、戦艦、巡洋艦2隻、駆逐艦の合計5隻を配置する。それぞれの仕様は以下の通り。

 空母 CARRIER サイズ1×5、黄色 1隻
 戦艦 BATTLE サイズ1×4水色 1隻
 巡洋艦 CRUISER サイズ1×3緑色 2隻
 駆逐艦  DESTROY サイズ1×2青色 1隻

これら5隻の配置を行う。配置条件は以下の通り。
  1. 全ての船は縦配置横配置ランダムで混ざる
  2. 船同士が重なってはいけない
配置結果を以下のように printf で表示せよ。なお、配置不能な状態を加味する必要はないため、適合する座標が見つかるまでランダムな値を取得し続ける処理で OK とする。
問18-1

  • 問18-2. 敵船の表示をゲームっぽく
上記で設定した配列 szSea をゲームっぽくインジケータを表示する。横方向には A ~ K を、縦方向には 0 ~ 8 を表示する。また、ゲームフィールドと行列番号表示を罫線で区切って表示する。なお、行番号と列表示はともに1文字として、2桁以上の配慮は不要とする。
問18-2
※ 実力確認テストの題材となったボードゲームです。それなりに推理力が必要でなかなか楽しいです。お正月の集まりに如何でしょうか?