本文へスキップ

令和6年度 ITパスポート試験 問62

この問題の解説と、これまでの解答の記録です。

問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

出典 令和6年度 ITパスポート試験 問62
解説

問 62

  • 不正解ア

    {0,0,1,2,1} は 0→B, 0→B, 1→A, 2→B, 1→A となり“BBABA”。先頭2文字が B になり“AABAB”と一致しない。

  • 不正解イ

    {0,1,2,1,1} は 0→B, 1→A, 2→B, 1→A, 1→A となり“BABAA”。1文字目が B, 末尾が A で“AABAB”と一致しない。

  • 不正解ウ

    {1,0,1,2,0} は 1→A, 0→B, 1→A, 2→B, 0→B となり“ABABB”。2文字目以降のパターンが“AABAB”と一致しない。

  • エ

    正解 プログラムは配列 arrayInput を要素番号1から末尾まで順にたどり, 要素の値が1と等しければ末尾に“A”を, それ以外なら“B”を追加して文字列を作る。戻り値が“AABAB”になるには, 1文字目から順に A・A・B・A・B となる必要があり, 各要素は「1, 1, 1以外, 1, 1以外」でなければならない。エ {1,1,2,1,0} をあてはめると, 1→A, 1→A, 2→B, 1→A, 0→B となり“AABAB”が得られるので正しい。

ここがポイント
  • 擬似言語のトレース: for で配列を要素番号1から順に走査し, if (選択) の条件「要素が1と等しい」で出力が“A”と“B”に分岐する流れを1要素ずつ追う。
  • 目標の出力文字列から逆算する考え方: “AABAB”の各文字 A/B を, A=要素が1, B=要素が1以外 と対応づけ, 各要素が満たすべき条件を特定して選択肢を照合する。
用語

解答の記録