問題
次の擬似言語プログラムで、関数reverse(str)を呼び出すと文字列の逆順が得られる。str = "hello"のとき、戻り値はどれか。 ○ 文字列型: reverse(文字列型: str) 文字列型: result ← "" 整数型: i for (i を str の長さ−1 から 0 まで 1 ずつ減らす) result ← result + str[i] endfor return result
選択肢
- 1ア "hello"
- 2イ "olleh"
- 3ウ "hhhhh"
- 4エ ""
正解
2. イ "olleh"
詳しい解説を見る解説を閉じる
解説
このプログラムは、ループ変数iを文字列の末尾の添字(strの長さ−1=4)から0まで1ずつ減らしながら、str[i]をresultの末尾に連結していく。"hello"の文字は添字0から順にh・e・l・l・oなので、取り出される順はstr[4]=o、str[3]=l、str[2]=l、str[1]=e、str[0]=hとなり、resultは"olleh"でイが正解である。誤答肢のア"hello"はループを昇順(0から長さ−1)に回した場合の結果であり、ウ"hhhhh"は添字を固定してstr[0]を5回連結した誤り、エ""はループ本体が一度も実行されなかった場合の初期値のままの結果である。デクリメント型ループの開始値・終了値の読み取りと、文字列連結が「後ろに付け足す」操作である点を正確にトレースすることが科目Bの頻出ポイントであり、添字が0始まりであることにも注意したい。
一問一答
科目A 180問+科目B 60問