科目B
令和8年度 基本情報技術者試験 科目B 公開問題 問1
次のプログラム中の に入れる正しい答えを,解答群の中から選べ。ここで,配列の要素番号は 1 から始まる。
次のプログラムは,整数型の配列 data の末尾の要素の値を先頭の要素に移動する。この際,末尾以外の各要素の値は,一つずつ後ろの要素に移動する。
〔プログラム〕
整数型の配列: data ← {1, 2, 3, 4, 5, 6, 7, 8, 9}
整数型: top, i
整数型: len ← dataの要素数
top ← data[len]
for (i を )
data[i] ← data[i - 1]
endfor
data[1] ← top
答えを選ぶ
出典:令和8年度 基本情報技術者試験 科目B 公開問題 問1(問題文は IPA の公開問題。図・数式・下線などはテキストに直して掲載。解説は当サイト作成)
解説に誤りを見つけたら、解説の誤りを報告してください。
答えと解説を見る
正解:エ
覚える知識
配列要素のシフト(ずらし)処理の流れ図読解
配列の要素を後ろへずらすときは末尾側から、前へずらすときは先頭側から処理する。そうしないと、まだ写していない値を上書きしてしまう。
この問題で必要なこと
末尾の値を top に退避してから、各要素を一つ後ろへ写す(data[i] ← data[i-1])。後ろへずらすときは、後ろ側から上書きしないと値が消える。iを len から 2 まで減らしていくと {1,…,9} は {9,1,2,…,8} になる。よって正解はエ。
ひっかけ
ア・イのように前から増やすと、data[2] 以降がすべて data[1] の値(1)で上書きされる。ウは len-1 から始めるので data[len] ← data[len-1] が抜け、8 が消えて 9 が残ったままになる(終わりの位置が1つずれる誤り)。