関数 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
頻出度★★☆
解説
問 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,确定各元素应满足的条件,再与各选项逐一核对。
用語