戦国IT - 情報処理技術者試験の過去問対策サイト
ブログお知らせお問い合わせ料金プラン

ITパスポート 2024年 62


問題文

関数convertは、整数型の配列を一定のルールで文字列に変換するプログラムである。関数convertをconvert(arrayInput)として呼び出したときの戻り値が“AABAB“になる引数arrayInputの値はどれか。ここで、arrayInputの要素数は1以上とし、配列の要素番号は1から始まる。
〔プログラム〕  ○文字列型: convert(整数型の配列: arrayInput)  文字列型: stringOutput ← ”” //空文字列を格納  整数型: i  for (iを1からarrayInputの要素数まで1ずつ増やす)   if (arrayInput[i]が1と等しい)    stringOutputの末尾に“A“を追加する   else    stringOutputの末尾に“B“を追加する   endif  endfor  return stringOutput

選択肢

{0, 0, 1, 2, 1}
{0, 1, 2, 1, 1}
{1, 0, 1, 2, 0}
{1, 1, 2, 1, 0}(正解)

🔒 解説は解答すると表示されます

関数convertの戻り値が“AABAB”になる引数はどれか【ITパスポート 解説】

正解の理由

このプログラムでは、配列(配列:同じ種類のデータを順に並べたもの)の各要素を先頭から順に調べます。条件文は「もし要素が1と等しいなら 'A' を追加、そうでなければ 'B' を追加」となっています。つまり「要素が1 → A」「要素が1でない → B」です。求める戻り値が "A A B A B" になるためには、配列の1〜5番目の値がそれぞれ「1, 1, (1ではない値), 1, (1ではない値)」でなければなりません。与えられた選択肢のうち、その条件を満たすのが の {1, 1, 2, 1, 0} です。3番目は2(1ではない)でB、5番目は0(1ではない)でBになるため、結果は "AABAB" になります。
(用語注)
  • 整数型(整数型:小数点のない数を扱うデータの種類)
  • 文字列型(文字列型:文字を並べて扱うデータの種類)
  • 要素番号は問題文どおり「1から始まる」ことに注意します(多くの言語では0から始まりますが、本問題は1始まりです)。

解法ステップ

  1. プログラムのルールを確認:要素が1なら 'A'、そうでなければ 'B' を末尾に追加する。
  2. 目標の文字列 "AABAB" を要素ごとに分けると、位置1〜5の対応は次の通り:
    • 1番目 → A → 要素は1
    • 2番目 → A → 要素は1
    • 3番目 → B → 要素は1以外(0や2など)
    • 4番目 → A → 要素は1
    • 5番目 → B → 要素は1以外
  3. 各選択肢を当てはめて、上の条件を満たすか確認する。
  4. 条件を満たすのは の {1, 1, 2, 1, 0} であると判断できる。

選択肢別の誤答解説

  • ア: {0, 0, 1, 2, 1}
    1番目が0なので1番目で 'B' が出ます。結果は "BBABB" のようになり、"AABAB" とは違います。
  • イ: {0, 1, 2, 1, 1}
    1番目が0で 'B' になるため、先頭が 'B' になり "AABAB" にできません。
  • ウ: {1, 0, 1, 2, 0}
    1番目が1でA、2番目が0でBとなるので先頭2文字は "AB" になり、目標の "AA" になりません。
  • : {1, 1, 2, 1, 0}
    1→A、2→A、3→2(1ではないのでB)、4→A、5→0(1ではないのでB)となり、順に "A A B A B"、つまり "AABAB" となります。よってこの選択肢が正しいです。

よくある誤解

  1. 添え字(要素番号)が0始まりだと勘違いする
    • 多くのプログラミング言語(例:C、Java、Python)は配列の添え字が0から始まりますが、本問題は「要素番号は1から始まる」と明記されています。問題文のルールに合わせて考えてください。
  2. 「1と等しい」の意味を取り違える
    • 条件は「等しい(==)」です。1より大きい・小さいではありません。値が1であればA、1でなければすべてBです(2や0、負の数でもBになります)。
  3. 要素の値そのものを文字に変換すると誤解する
    • プログラムは数値を文字に変換しているのではなく、条件によって文字 'A' または 'B' を追加しています。数値が1かどうかが判断基準です。

補足コラム

配列の添え字(インデックス)が1から始まるか0から始まるかは、出題者や言語仕様で変わります。試験問題では問題文の記述に従うことが最重要です。実務では、たとえばExcelの行番号は1から始まりますが、プログラミング言語の実装では0始まりが多数派です。問題を解くときは「まず問題文を正確に読む」ことを習慣にしましょう。
簡単な確認テクニック:求めたい文字列の各文字を「その位置の要素が1か否か」に置き換え、候補と比較するだけです。今回なら "AABAB" → 1,1,≠1,1,≠1 という具合です。

FAQ

Q1: 配列に2や0が混ざっていても判定できますか?
A1: はい。プログラムは「1かどうか」だけを見ているため、2や0はどちらも「1ではない」扱いでBになります。
Q2: 要素数が5より多い・少ない場合はどうする?
A2: 問題文にある出力が5文字(AABAB)なので、対象の配列は少なくとも5要素必要です。選択肢は5要素で与えられているため、そのまま比較します。一般的にはループは配列の要素数分だけ回ります。
Q3: プログラムの if 文が逆に読める気がします。見分け方は?
A3: 「if (arrayInput[i]が1と等しい) stringOutputに 'A' を追加 else 'B'」と明記されています。まずその自然文どおりに解釈してください。迷ったら例を1つ手で追うと確実です。

関連キーワード: 配列、添え字(インデックス)、等価比較、文字列連結、条件分岐、ループ、1始まり添え字、単純判定
← 前の問題へこの年度をクイズで解く次の問題へ →
戦国ITクイズ機能

\ せっかくなら /

ITパスポート
クイズ形式で学習しませんか?

クイズ画面へ遷移する

すぐに利用可能!

©︎2026 情報処理技術者試験対策アプリ

このサイトについてブログプライバシーポリシー利用規約特商法表記開発者について