修了試験 2018-07-22実施分 基本情報技術者試験 問5
配列Aが図2の状態のとき,図1の流れ図を実行すると,配列Bが図3の状態になった。 図1のaに入れるべき操作はどれか。 ここで,配列A,Bの要素をそれぞれA(i, j),B(i, j)とする。

正答4
解説
正解は4です。 図1は、iとjをそれぞれ0から7まで1ずつ増やす二重ループで、全要素に操作aを行います。 図2の配列Aは、列1(j=1)が縦に全部、行0のj=1~6、行3のj=1~4に*がある形です。 図3の配列Bは、行1(i=1)が横に全部、列7のi=1~6、列4のi=1~4に*がある形です。 これはAを時計回りに90度回転した形であり、各候補で*の移り先を確かめます。 【選択肢別解説】 1:× B(7-i, 7-j)←A(i, j) は上下左右を反転する(180度回転)操作です。 Aの列1は Bの列6 に移り、行1が全部埋まる図3にはなりません。 2:× B(7-j, i)←A(i, j) は反時計回りの90度回転です。 Aの列1(j=1)は Bの行6 に移り、図3の行1にはなりません。 3:× B(i, 7-j)←A(i, j) は左右反転です。 Aの列1は Bの列6 に移るだけで、縦横が入れ替わりません。 4:○ B(j, 7-i)←A(i, j) では、Aの列1の要素 A(i, 1) が B(1, 7-i) に入ります。 iが0~7なので、Bの行1の列7~0がすべて*になります。 Aの行0の要素 A(0, j)(j=1~6)は B(j, 7) に入り、列7のi=1~6が*になります。 Aの行3の要素 A(3, j)(j=1~4)は B(j, 4) に入り、列4のi=1~4が*になります。 3つとも図3と一致します。 【ポイント】 時計回り90度回転は「新しい行=元の列、新しい列=(最大添字-元の行)」です。 特徴的な行や列を1本選び、移り先を確かめると素早く判定できます。まとめて解く
修了試験 2018-07-22実施分を通しで解く(80問)→