跳到正文

令和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”。开头两个字符为 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”不一致。

  • エ

    正解 程序从元素编号 1 开始到末尾依次遍历数组 arrayInput,若元素的值等于 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”,逐个元素追踪这一流程。
  • 从目标输出字符串反推的思路:将“AABAB”的每个字符 A/B 对应为 A=元素为 1、B=元素非 1,确定各元素应满足的条件,再与各选项逐一核对。
用語
解答問62エ
练这一题

作答记录