基本情報技術者 2016年 春期 午前(科目A) 問06
問題文
2次元の整数型配列aの各要素a(i, j)の値は、2i + jである。このとき、a(a(1, 1)×2, a(2, 2)+1)の値は幾つか。
選択肢
ア:12
イ:13
ウ:18
エ:19(正解)
🔒 解説は解答すると表示されます
2次元配列の要素計算【午前解説】
正解の理由
問題は関数的に定義された2次元配列の要素を順に評価する典型問題です。定義 を用いて次のように計算します。
- 。
- その値を2倍して行番号に使うので行添字は 。
- だから列添字は 。
- 最後に 。したがって正解はエ(19)です。
解法ステップ
- 定義 を確認する。
- 内側の参照 を計算する:。
- 得た値を2倍して行添字を得る:。
- もう一方の内側参照 を計算する:。
- 列添字を求める:。
- 最終的に を計算する:。これが答え。
選択肢別の誤答解説
- ア: 12 — 行や列のどちらかだけを計算して最終評価を省略した、もしくは のように列添字を誤って0にした場合に出る誤り。
- イ: 13 — 例えば をそのまま行添字にして のようにしたり,列添字の加算を忘れて1を加えないミスで生じる値です。
- ウ: 18 — の計算で を や のように列添字を誤って6にした場合の典型的なミス。
- エ: 19 — 正答。内側の評価を順序通り行い と正しく計算した場合の結果です。
よくある誤解
- 0始まりと1始まりの混同:プログラミングでは0始まりが多いが、この問題は数式表記で1始まりと解釈すべき場面です。
- 計算順序の取り違え:まず内側の と を評価してから、それらを添字に代入することを忘れてしまう。
- 乗算・加算の優先度誤認: を のように誤って扱うミス。
補足コラム
数学表記の配列 は通常1始まりと解釈するのが自然です。一方でプログラミング言語では0始まりが多いので、問題文の文脈に従って添字の基準を判断してください。また「入れ子参照(ネスト)」の問題は、まず最も内側の値を確定してから外側へ代入するという手順を厳密に守るとミスが減ります。演算の順序(乗算と加算)も基本通り適用します。
FAQ
Q1: この問題で添字が配列の範囲外になる心配はありますか?
A1: 問題は抽象的定義のみ与えられており範囲制限は示されていません。数学的には添字に対応する値をそのまま計算します。
A1: 問題は抽象的定義のみ与えられており範囲制限は示されていません。数学的には添字に対応する値をそのまま計算します。
Q2: もし配列が0始まりだったら答えはどうなりますか?
A2: 0始まりで解釈すると の意味が変わり計算手順自体が変わるため別解になります。本問では数学表記に従い1始まりとするのが妥当です。
A2: 0始まりで解釈すると の意味が変わり計算手順自体が変わるため別解になります。本問では数学表記に従い1始まりとするのが妥当です。
Q3: 「a(a(1,1)×2, a(2,2)+1)」の括弧はどう読むべきですか?
A3: 左から右へ評価するのではなく、まず内側の と を計算してからそれらを添字として使う形で評価します。
A3: 左から右へ評価するのではなく、まず内側の と を計算してからそれらを添字として使う形で評価します。
関連キーワード: 2次元配列、添字計算、入れ子参照、演算子優先順位、算術計算、配列アクセス、午前2対策

\ せっかくなら /
基本情報技術者を
クイズ形式で学習しませんか?
クイズ画面へ遷移する→
すぐに利用可能!

