令和6年(2024年)4月から選択問題(問題5)に改訂があります。
改訂の詳細は以下URLをご覧ください。

https://jken.sgec.or.jp/common/pdf/information/jken̲r6̲kaitei̲jsystem̲programming.pdf

情報システム試験

文部科学省後援

令和５年度後期 情報検定＜実施

令和6年2月11日（日）＞プログラミングスキル（説明時間

10：00～10：10）（試験時間

10：10～11：40）

・試験問題は試験開始の合図があるまで開かないでください。
・解答用紙（マークシート）への必要事項の記入は，試験開始の合図と同時に行いますので，それまで伏せておいてください。
・試験開始の合図の後，次のページを開いてください。＜受験上の注意＞が記載されています。必ず目を通してから解答を始めてください。
・試験問題は，すべてマークシート方式です。正解と思われるものを１つ選
び，解答欄のをＨＢの黒鉛筆でぬりつぶしてください。２つ以上ぬりつ

ぶすと，不正解になります。
・辞書，参考書類の使用および筆記用具の貸し借りは一切禁止です。
・電卓の使用が認められます。ただし，下記の機種については使用が認められません。
＜使用を認めない電卓＞．．
１．電池式（太陽電池を含む）以外 の電卓
２．文字表示領域が複数行ある電卓（計算状態表示の一行は含まない）
３．プログラムを組み込む機能がある電卓
４．電卓が主たる機能ではないもの＊パソコン（電子メール専用機等を含む），携帯電話，スマートフォン，
タブレット，電子手帳，電子メモ，電子辞書，翻訳機能付き電卓，
音声応答のある電卓，電卓付き腕時計，時計型ウェアラブル端末等
５．その他試験監督者が不適切と認めるもの

一般財団法人

職業教育・キャリア教育財団

1
プログラミングスキル

令和6年(2024年)4月から選択問題(問題5)に改訂があります。
改訂の詳細は以下URLをご覧ください。

https://jken.sgec.or.jp/common/pdf/information/jken̲r6̲kaitei̲jsystem̲programming.pdf＜受験上の注意＞
１．この試験問題は29ページあります。ページ数を確認してください。
乱丁等がある場合は，手をあげて試験監督者に合図してください。
※問題を読みやすくするために空白ページを設けている場合があります。
２．解答用紙（マークシート）に，受験者氏名・受験番号を記入し，受験番号下欄の数字
をぬりつぶしてください。正しく記入されていない場合は，採点されませんので十分注意してください。
３．試験問題についての質問には，一切答えられません。自分で判断して解答してください。
４．試験中の筆記用具の貸し借りは一切禁止します。筆記用具が破損等により使用不能となった場合は，手をあげて試験監督者に合図してください。
５．試験を開始してから30分以内は途中退出できません。30分経過後退出する場合は，もう一度，受験番号・マーク・氏名が記載されているか確認して退出してください。なお，
試験終了５分前の合図以降は退出できません。試験問題は各自お持ち帰りください。
６．試験後の合否結果（合否通知），および合格者への「合格証・認定証」はすべて，Ｗｅｂ認証で行います。
①情報検定（J検）Webサイト合否結果検索ページ及びモバイル合否検索サイト上で，ディジタル「合否通知」，ディジタル「合格証・認定証」が交付されます。
②団体宛には合否結果一覧ほか，試験結果資料一式を送付します。
③合否等の結果についての電話・手紙等でのお問い合わせには，一切応じられませんので，ご了承ください。

2
プログラミングスキル

令和6年(2024年)4月から選択問題(問題5)に改訂があります。
改訂の詳細は以下URLをご覧ください。

https://jken.sgec.or.jp/common/pdf/information/jken̲r6̲kaitei̲jsystem̲programming.pdf＜問題の構成＞
必須問題

全員解答

問
題
１
～
問
題
４

2 ページ～13 ページ

選択問題

次の問題から１問選択し解答せよ。

．．．．．．．．．．．．．．．
（選択した問題は解答用紙「選択欄」に必ずマークすること ）※選択欄にマークがなく，解答のみマークした場合は採点を行いません。

・Ｃ言語の問題15 ページ～20 ページ

・表計算の問題21 ページ～ 27 ページ

・アセンブラの問題

28 ページ～ 29 ページ

1
プログラミングスキル

令和6年(2024年)4月から選択問題(問題5)に改訂があります。
改訂の詳細は以下URLをご覧ください。

https://jken.sgec.or.jp/common/pdf/information/jken̲r6̲kaitei̲jsystem̲programming.pdf
必須問題
問題１

次のデータ構造に関する記述を読み，各設問に答えよ。

データ構造の１つに２分木がある。２分木とは１つの親ノード（Ａ）が最大２つの子ノード（Ｂ，Ｃ）を持つものである。下記の図は２分木が階層構造になっている。

Ａ

Ｂ

Ｃ

Ｄ

Ｅ

図１
＜設問１＞

２分木の構造次の２分木の走査に関する記述中の(1)に入れるべき適切な字句を解答群から選べ。
２分木を走査する考え方は，大きく２つに分類することができる。
１つは幅優先探索といい，最上位のノードである親から次の階層である左の子，右の子という順番に階層ごとに走査していく。これにより階層が浅いデータを優先して走査できる。
２つ目は深さ優先探索といい，ノードを縦方向に走査し，行き止まりになったら，後戻りして別のノードを縦方向に走査する。深さ優先探索は走査する順序により，さらに３つに分けられる。図１を例に走査する順序を次に示す。
[深さ優先探索の走査方法]
前順：最初に親ノードから走査し次に左子ノードを走査する。さらにその下に左子ノードがある場合は行き止まりになるまで左子ノードを走査する。行き止まりになったら右子ノードを走査する。
（図１の例）Ａ

→

Ｂ

→

Ｄ

→

Ｅ

→

Ｃ

間順：最初に左側のノードを行き止まりになるまで走査する。行き止まりになったら親ノードを走査し，その後，右ノードを走査する。
（図１の例）Ｄ

→

Ｂ

→

Ｅ

→

Ａ

→

Ｃ

後順：最初に左側のノードを行き止まりになるまで走査する。行き止まりになったら右側のノードを同様に走査する。さらに行き止まりになったら親ノードを走査する。
（図１の例）Ｄ2
プログラミングスキル

→

Ｅ

→

Ｂ

→

Ｃ

→

Ａ

令和6年(2024年)4月から選択問題(問題5)に改訂があります。
改訂の詳細は以下URLをご覧ください。

https://jken.sgec.or.jp/common/pdf/information/jken̲r6̲kaitei̲jsystem̲programming.pdf
ここで，図２の状態である２分木がある。
必
須
問
題

図２

２分木

図２の２分木を走査するときに深さ優先探索の間順では
(2)

(1)

，後順では

となる。

(1) の解答群
ア．ＡＢＣＤＥＦＧ

イ．ＢＡＣＤＥＦＧ

ウ．ＢＡＦＤＧＣＥエ．ＤＦＧＣＥＢＡ(2) の解答群
ア．ＡＢＣＤＦＧＥ

イ．ＢＦＧＤＥＣＡウ．ＢＡＦＤＧＣＥエ．ＦＧＤＥＣＢＡ＜設問２＞

次の逆ポーランド記法に関する記述中の(1)に入れるべき適切な字句を解答群から選べ。
数式を逆ポーランド記法に変換するときに，２分木を利用することができる。例えば，Ｙ＝（Ａ＋Ｂ）×Ｃ－Ｄを２分木で表現すると，計算の優先度が高いものから２分木の下部に配置され，演算子をデータの結合点である「節」に配置していくと図３のようになる。

図３

数式の２分木3
プログラミングスキル

令和6年(2024年)4月から選択問題(問題5)に改訂があります。
改訂の詳細は以下URLをご覧ください。

https://jken.sgec.or.jp/common/pdf/information/jken̲r6̲kaitei̲jsystem̲programming.pdf
数式Ｙ＝(Ａ－Ｂ÷Ｃ)×Ｄを２分木で表現すると(3)となる。またこの２分

木を深さ優先の後順でたどると，逆ポーランド記法に変換することができる。
(3)

を逆ポーランド記法に変換すると

(4)

となる。

次に逆ポーランド記法で表現された式ＹＡＢ－ＣＤ＋×＝にＡ＝５，Ｂ＝２，
Ｃ＝４，Ｄ＝３を代入して計算するとＹの値は

(5)

となる。

(3) の解答群
ア．

イ．
＝

Ｙ

×
－

Ａ

Ｄ
÷

Ｂ

Ｃ

ウ．

エ．

(4) の解答群
ア．ＹＡＢ－ＣＤ×÷＝イ．ＹＡＢＣＤ×÷－＝ウ．ＹＡＢＣ÷Ｄ×－＝

エ．ＹＡＢＣ÷－Ｄ×＝(5) の解答群
ア．12

4
プログラミングスキル

イ．15

ウ．18

エ．21

令和6年(2024年)4月から選択問題(問題5)に改訂があります。
改訂の詳細は以下URLをご覧ください。

https://jken.sgec.or.jp/common/pdf/information/jken̲r6̲kaitei̲jsystem̲programming.pdf
問題２

次の流れ図の説明を読み，流れ図中の(1)に入れるべき適切な字句を解答群から選べ。
［流れ図の説明］
図１に示すように二つの１次元配列 a と b のデータを一つの１次元配列 c に併合する流れ図である。
１次元配列 a と b は共に昇順に整列済みであり，配列要素の最後には H.V.(どのデー
タよりも大きな値)が格納されている。生成する１次元配列 c も昇順になるように格納し，配列要素の最後には H.V.を格納する。ここで，１次元配列 a と b の要素が同じ値のときは，配列 a の要素が先に配列 c に格納される。なお，配列の添え字は０から
始まる。
配列 a

12

13

24

H.V.

配列 b

13

15

18

20

30

H.V.

配列 c

12

13

13

15

18

20

図１

配列データの併合

24

30

H.V.

5
プログラミングスキル

令和6年(2024年)4月から選択問題(問題5)に改訂があります。
改訂の詳細は以下URLをご覧ください。

https://jken.sgec.or.jp/common/pdf/information/jken̲r6̲kaitei̲jsystem̲programming.pdf
［流れ図］
開

始

x

← 0

y

← 0

z

← 0
ループ

（1）
≦
c［z］

←

の間繰り返すa［x］： b［y］

＞

a［x］

c［z］

(2)

← b［y］

(3)

(4)

ループ

(5)

終

図２

了

配列データ併合の流れ図(1) の解答群
ア．a[x]＝H.V.かつ b[y]＝H.V.

イ．a[x]＝H.V.または b[y]＝H.V.

ウ．a[x]≠H.V.かつ b[y]≠H.V.

エ．a[x]≠H.V.または b[y]≠H.V.

(2) ～ (4) の解答群
ア．a[x]←H.V.

イ．b[y]←H.V.

エ．y←y＋1

オ．z←z＋1

ウ．x←x＋1(5) の解答群
ア．c[x]←H.V.

6
プログラミングスキル

イ．c[y]←H.V.

ウ．c[z]←H.V.

令和6年(2024年)4月から選択問題(問題5)に改訂があります。
改訂の詳細は以下URLをご覧ください。

https://jken.sgec.or.jp/common/pdf/information/jken̲r6̲kaitei̲jsystem̲programming.pdf
問題３

次の文字列の置換に関する記述を読み，各設問に答えよ。

［文字列について］
文字列は，配列の１要素に１文字ずつ格納する。この問題では，「文字列 X」と記述しているものは，配列 X の先頭から順番に１文字ずつ格納しているものとする。なお，
配列の要素番号は１から始まる。また，配列の大きさは処理に十分な大きさを持つものとする。
［文字列の置換について］
文字列 S に含まれる文字列 F を文字列 T で置換する。置換後の文字列は，文字列 Rに格納する。
ここでは，次のような手順で置換を行う。
・ 文字列 S と文字列 F を先頭から１文字ずつ比較する。
・ 不一致の場合は，比較を開始した位置の文字列 S の文字を文字列 R に転送し，文字列 S の比較開始位置を１文字分ずらした位置から再開する。
文字列F

A B C

文字列S

不一致
A B A B C X Y Z

文字列R

A

文字列F

A B C

文字列S

不一致
A B A B C X Y Z

文字列R

A B

図１

文字列Sの１文字目から比較
３文字目で不一致になるので文字列Sの１文字目を文字列Rへ転送

文字列Sの２文字目から比較
１文字目で不一致になるので文字列Sの２文字目を文字列Rへ転送

不一致の場合・ 一致した場合は文字列 T を文字列 R に転送し，文字列 S の比較開始位置を文字列 Fの文字数分ずらした位置から比較を再開する。
文字列F

A B C

文字列S

一致
A B A B C X Y Z

文字列RA B P Q

文字列T

P Q

図２
＜設問１＞

次の流れ図中の文字列Sの３文字目から比較すべて一致するので文字列Tを文字列Rへ転送(1)

一致した場合に入れるべき適切な字句を解答群から選べ。なお，流れ図中で使用している len 関数は文字数を返却する関数であり，引数として文7
プログラミングスキル

令和6年(2024年)4月から選択問題(問題5)に改訂があります。
改訂の詳細は以下URLをご覧ください。

https://jken.sgec.or.jp/common/pdf/information/jken̲r6̲kaitei̲jsystem̲programming.pdf
字列を与える。また，文字列 S，文字列 F，文字列 T，文字列 R は，それぞれ S，F，T，
R と表現し，広域変数として宣言されており，あらかじめ文字列が設定されている。
［流れ図］

sw1

図３

8
プログラミングスキル

文字列を置換する流れ図

令和6年(2024年)4月から選択問題(問題5)に改訂があります。
改訂の詳細は以下URLをご覧ください。

https://jken.sgec.or.jp/common/pdf/information/jken̲r6̲kaitei̲jsystem̲programming.pdf(1) の解答群
ア．i ＞ lenS

イ．i ＞ lenS － lenF

ウ．i ＞ lenS － lenF － 1

エ．i ＞ lenS － lenF ＋ 1(2) の解答群
ア．S[i＋j] ＝ F[j]イ．S[i＋j] ≠ F[j]ウ．S[i＋j－1] ＝ F[j]エ．S[i＋j－1] ≠ F[j](3) の解答群
ア．j ＞ lenF

イ．j ＞ lenS

ウ．j ＝ lenF

エ．j ＝ lenS(4) の解答群
ア．k ≦ lenF

イ．k ≦ lenS

ウ．k ≦ lenTエ．k ≦ lenR(5) ，(6) の解答群
ア．i ← i ＋ 1

イ．i ← i ＋ k

ウ．i ← i ＋ lenF

エ．i ← i ＋ lenS

オ．i ← i ＋ lenT

カ．i ← i ＋ lenR

＜設問２＞

次の文字列の置換処理に関する記述を読み，記述中の

(1)

に入れる

べき適切な字句を解答群から選べ。なお，流れ図中の空欄には正しい解答が選択されているものとする。
文字列 S，文字列 F，文字列 T の内容を次の図４のように設定して流れ図を実行した場合について考察する。

文字列 S

文字列 F

1

2

3

4

5

6

7

8

A

B

C

A

B

X

Y

Z

1

2

B

C

文字列 T

図４

設定した値

・流れ図の「変更ループ」内の３つの処理は

(7)

1

2

3

L

M

N

回繰り返される。

・流れ図の「転送ループ」内の「R[lenR] ← S[i]」の処理は・流れ図の処理を終えた時の lenR の値は

(9)

(8)

回実行される。

である。

9
プログラミングスキル

令和6年(2024年)4月から選択問題(問題5)に改訂があります。
改訂の詳細は以下URLをご覧ください。

https://jken.sgec.or.jp/common/pdf/information/jken̲r6̲kaitei̲jsystem̲programming.pdf(7) の解答群
ア．1

イ．2

ウ．3

エ．4

イ．1

ウ．2

エ．3

イ．9

ウ．10

エ．11

(8) の解答群
ア．0(9) の解答群
ア．8

＜設問３＞

次の置換処理の変更に関する記述中の(1)に入れるべき適切な字句を解答群から選べ。なお，流れ図中の空欄には正しい解答が選択されているものとする。なお，空欄(6)については設問１と同じ字句が入る。
この流れ図では，文字列 S の中に文字列 F が複数含まれていれば，その数の分の置換を行う。これを最初に一致する文字列だけを置換するように変更したい。そのため
流れ図中の

(6)

の下（Ａの位置）に処理を追加する。その処理はある。
(10) の解答群

10
プログラミングスキル

ア．i ← lenS

イ．i ← lenS ＋ 1

ウ．sw1 ← 1

エ．sw2 ← 1

(10)で

令和6年(2024年)4月から選択問題(問題5)に改訂があります。
改訂の詳細は以下URLをご覧ください。

https://jken.sgec.or.jp/common/pdf/information/jken̲r6̲kaitei̲jsystem̲programming.pdf
問題４次のプログラムの説明を読み，各設問に答えよ。

［プログラムの説明］
関数rotate_90は，ｎ行ｎ列の２次元配列dataに対して，反時計回りに90度回転させるプログラムである。２次元配列dataの大きさは十分に確保されており，添字は０から始まる。なお，回転後の配列は元の配列に上書きする。次は，10行10列の２次元配列dataの例である。

図
表

回転の例

移動対象の例(抜粋)

外回り

１つ内側

真ん中

配列[0][0]配列[1][1]配列[4][4]→配列[9][0]→配列[8][1]→配列[5][4]配列[0][9]配列[1][8]→配列[0][0]→配列[1][1]→配列[4][4]配列[9][9]配列[8][8]配列[5][5]→配列[0][9]→配列[1][8]→配列[4][5]配列[9][0]配列[8][1]配列[5][4]→配列[9][9]→配列[8][8]→配列[5][5]…

配列[4][5]［擬似言語の記述形式の説明］
記述形式

説明

○

手続き，変数などの名前，型などを宣言する。

・変数 ← 式

変数に式の値を代入する。

/* 文 */

注釈を記述する。

▲

選択処理を示す。

条件式
・処理１

条件式が真の時は処理１を実行し，偽の時は処理２を実行する。

・処理２
▼

11
プログラミングスキル

令和6年(2024年)4月から選択問題(問題5)に改訂があります。
改訂の詳細は以下URLをご覧ください。

https://jken.sgec.or.jp/common/pdf/information/jken̲r6̲kaitei̲jsystem̲programming.pdf
■

条件式

■

・処理

前判定繰り返し処理を示す。
条件式が真の間，処理を実行する。

［演算子と優先順位］
演算の種類

演算子

単項演算

＋, －, not

乗除演算＊, ／, ％

加減演算

＋, －

関係演算

＞, ＜, ≧, ≦, ＝, ≠

論理積

and

論理和

or

注記

優先順位
高

低

整数同士の除算では，整数の商を結果として返す。％演算子は剰余算を表す。

［プログラム］〇rotate_90（文字型配列：data[][]，整数型：n）〇整数型：i, k, work, ind_1, ind_2/* 正方行列の回転処理 */・i ← 0■(1)・ind_1 ← n － i － 1
・k ← i■ k < ind_1/* 配列を回転させる */・ind_2 ←(2)・work ← matrix[i][k]・matrix[i][k] ←
・

(3)

(3)

← matrix[ind_1][ind_2]

・matrix[ind_1][ind_2] ←・(4)← work・k ← k ＋ 1■
・i ← i ＋ 1■

12
プログラミングスキル(4)令和6年(2024年)4月から選択問題(問題5)に改訂があります。
改訂の詳細は以下URLをご覧ください。

https://jken.sgec.or.jp/common/pdf/information/jken̲r6̲kaitei̲jsystem̲programming.pdf＜設問１＞

プログラム中の(1)に入れるべき適切な字句を解答群から選べ。

(1) の解答群
ア．i ＜ n／4

イ．i ＜ (n－1)／2

ウ．i ＜ n／2

イ．n － kウ．n － k ＋ 1(2) の解答群
ア．n － k － 1(3) ，(4) の解答群
ア．matrix[i][ind_1]

イ．matrix[i][ind_2]

ウ．matrix[ind_2][i]エ．matrix[ind_2][ind_1]

オ．matrix[k][ind_1]

カ．matrix[k][ind_2]＜設問２＞

次のプログラムの実行に関する記述中の(1)に入れるべき適切な字句を解答群から選べ。
関数 rotate_90 を繰り返し呼び出すことにより，正方行列を反時計方向に 180 度，270度…と回転した配列を求めることができる。例えば，４回呼び出す（360 度回転する）と元の配列に戻るため，630 度回転するには
(b))

(a))

回，810 度回転するには回呼び出せばよい。

(5) の解答群
（a）

（b）

ア．

1

2

イ．

2

1

ウ．

2

2

エ．

3

1

オ．

3

2

13
プログラミングスキル

令和6年(2024年)4月から選択問題(問題5)に改訂があります。
改訂の詳細は以下URLをご覧ください。

https://jken.sgec.or.jp/common/pdf/information/jken̲r6̲kaitei̲jsystem̲programming.pdf＜ 選 択 問 題 ＞
選択問題は問題から１つ選択し解答せよ。
選択した問題は必ず，解答用紙「選択欄」にマークすること。
※選択欄にマークがなく，解答のみの場合は採点を行いません。

各構成は以下のとおり。

選択問題

14
プログラミングスキル

・Ｃ言語の問題15 ページ～20 ページ

・表計算の問題21 ページ～ 27 ページ

・アセンブラの問題

28 ページ～ 29 ページ

令和6年(2024年)4月から選択問題(問題5)に改訂があります。
改訂の詳細は以下URLをご覧ください。

https://jken.sgec.or.jp/common/pdf/information/jken̲r6̲kaitei̲jsystem̲programming.pdf
選択問題

C言語の問題

次のヒープ構造に関する記述を読み，設問に答えよ。
［ヒープ構造について］
二分木構造において，親の値が子の値より常に大きいか等しい，または小さいか等
しいという制約を満たすものをヒープ構造と呼ぶ。この問題では，親の値が子の値よ

選
択
問
題

り常に大きいか等しいものとして処理する。図１はヒープ構造の例を示しているもの
で，「○」で節を表しており，「○」の中の数値が節の値である。ヒープ構造の制約に従えば，根の値は節の中で一番大きな値となる。なお，子の節が１つの場合は左の子Ｃ言語とし，子の節が２つある場合，左右の並びは値と関係ない。
根
9
左の子

右の子

7

5

4

2

図１

1

3

ヒープ構造の例

ヒープ構造を一次元配列に構築する。条件は以下のとおりとする。
・一次元配列 ary にヒープ構造を構築する。
・根の値は ary[0]に格納する。
・親の節の位置を p とすれば，左の子が格納される位置は p×2＋1，右の子が格納される位置は p×2＋2 となる。
次の図２は，上記の条件により図１のヒープ構造を配列 ary に格納したものである。
位置

0

1

2

3

4

5

6

ary

9

7

5

4

2

1

3

図２

ヒープ構造を一次元配列に格納した例

ランダムな値が格納された配列でヒープ構造を構築するには，「親要素と子要素の最大三要素中の最大値が親要素の位置に格納されるようにデータを入れ替える」という操作を繰り返す。ここで，ヒープ構造を構築する順序は二分木の最下位層から始め，順次上位層まで行う。したがって，図２のように要素数が 7 の場合であれば ary[2]を親要素とする部分木から始める。
ヒープ構造構築時に親要素と子要素の間でデータの入れ替えが発生した場合は，構築後に親となっている節を子の節とする一つ上の階層の二分木へ移動して操作を繰

15
プログラミングスキル

令和6年(2024年)4月から選択問題(問題5)に改訂があります。
改訂の詳細は以下URLをご覧ください。

https://jken.sgec.or.jp/common/pdf/information/jken̲r6̲kaitei̲jsystem̲programming.pdf
り返す。データの入れ替えが発生しなければ，その節におけるヒープ構造の構築は完了したことになるので操作を終える。
＜設問１＞

ヒープ構造になっている配列を解答群から選べ。

(1) の解答群
ア．

7

1

2

3

4

5

6

イ．

7

5

1

2

6

4

3

ウ．

7

5

6

4

3

2

1

エ．

7

6

4

1

2

3

5

＜設問２＞
ム中の

次のヒープ構造を作成する関数 makeHeap に関する記述を読み，プログラ(1)に入れるべき適切な字句を解答群から選べ。

［プログラムの説明］
引数で受け取ったランダムな値が格納された配列 ary にヒープ構造を構築する関数 makeHeap である。この関数では，データを入れ替える関数 swap，ヒープ構造にするために親要素とデータを交換する子要素の位置を返す関数 toHeap を利用する。
［関数の説明］
swap 関数
引数：x(int *)，y(int *)機

能：x と y の値を交換する

戻り値：なしtoHeap 関数
引数：ary(int *)，size(int)，parent(int)機

能：配列を ary，その大きさを size，親要素の位置を parent に受取り，ヒープ構造にするために親要素と入れ替える子要素の位置を返す。ただし，親要素の値が大きい場合と子要素が存在しない場合は-1 を返す。

戻り値：入れ替える子要素の位置または-1
makeHeap 関数
引数：ary(int *)，size(int)機

能：配列 ary にヒープ構造を構築する

戻り値：なし16
プログラミングスキル

令和6年(2024年)4月から選択問題(問題5)に改訂があります。
改訂の詳細は以下URLをご覧ください。

https://jken.sgec.or.jp/common/pdf/information/jken̲r6̲kaitei̲jsystem̲programming.pdf［プログラム］
void swap(int *x, int *y) {int w;
w = *x;*x = *y;*y = w;}
int toHeap(int *ary, int size, int parent) {/* 交換不要の場合の返却値を設定 */int result = -1;(2)

int child =;/* 左子要素の位置を計算 *//* 子要素が存在する場合の処理 */if (child < size) {if (child < size - 1) {/* 子要素同士の比較 */if (ary[child + 1] > ary[child]) {child++;}}
if (ary[parent] < ary[child]) {result = child;}}return result;}void makeHeap(int *ary, int size) {int parent, p, sw, child;
p =

(3)

/* 要素数から最後の親要素の位置を計算 */;while (p >= 0) {sw = 0;parent = p;
while (sw == 0) {/* 子要素の中で大きい値の要素位置を child に求める */child = toHeap(ary, size, parent);
if (child > 0) {/* 下の階層のヒープ構造を再構築する */while(child > 0) {swap(&ary[parent], &ary[child]);(4);

child = toHeap(ary, size, parent);}

17
プログラミングスキル

令和6年(2024年)4月から選択問題(問題5)に改訂があります。
改訂の詳細は以下URLをご覧ください。

https://jken.sgec.or.jp/common/pdf/information/jken̲r6̲kaitei̲jsystem̲programming.pdf
parent = p;
if (parent > 0) {/* 上の階層の親へ移動 */parent = (parent - 1) / 2;
} else {sw = 1;/* 上の階層の親が無いので終える */}} else {(5); /* この節での構築を終了する */

}
}
(6)

;

/* 次の親要素へ移動 */}}(2) の解答群
ア．parent / 2

イ．parent / 2 + 1

ウ．parent * 2エ．parent * 2 + 1(3) の解答群
ア．(size - 2) / 2

イ．(size - 1) / 2

ウ．size / 2エ．(size + 1) / 2(4) の解答群
ア．child = parent

イ．child = parent * 2 + 1

ウ．parent = childエ．parent = parent / 2(5) の解答群
ア．child++

イ．parent = 0

ウ．parent = childエ．sw = 1(6) の解答群

18
プログラミングスキル

ア．p--

イ．p++

ウ．p = childエ．p = p / 2

令和6年(2024年)4月から選択問題(問題5)に改訂があります。
改訂の詳細は以下URLをご覧ください。

https://jken.sgec.or.jp/common/pdf/information/jken̲r6̲kaitei̲jsystem̲programming.pdf＜設問３＞

次のヒープソートに関する記述を読み，プログラム中の

(1)

に入れ

るべき適切な字句を解答群から選べ。
ヒープ構造を構築すると配列の先頭に最大値が格納される。これを利用して並べ替えを行うのがヒープソートである。配列の要素数を N とした場合に以下の①～③を Nが１になるまで繰り返すことで並べ替えが完了する。
① 配列の要素位置 0～N-1 のデータでヒープ構造を構築する。
② 配列の要素位置[0]とヒープ構造を構築した最後の要素位置の値を交換する。
③ N から１を引く。
N＝7

N＝6

7

5

4

2

1

3

ary[0]～ary[6]でヒープ構造を構築

3

7

5

4

2

1

9

ary[0]と ary[6]を交換

7

4

5

3

2

1

9

ary[0]～ary[5]でヒープ構造を構築

1

4

5

3

2

7

9

ary[0]と ary[5]を交換

5

4

1

3

2

7

9

ary[0]～ary[4]でヒープ構造を構築

2

4

1

3

5

7

9

ary[0]と ary[4]を交換

…

N＝5

9

図３

ヒープソートの流れ

次の関数 heapSort は，引数で受け取った配列をヒープソートにより昇順に並べ替えるものである。heapSort では，設問２の関数 swap と makeHeap を使用する。なお，
配列の要素数は引数 size で受け取る。
［関数の説明］
heapSort 関数
引数：ary(int *)，size(int)機

能：ヒープソートにより並べ替えを行う

戻り値：なし19
プログラミングスキル

令和6年(2024年)4月から選択問題(問題5)に改訂があります。
改訂の詳細は以下URLをご覧ください。

https://jken.sgec.or.jp/common/pdf/information/jken̲r6̲kaitei̲jsystem̲programming.pdf［プログラム］
void heapSort(int *ary, int size) {int n;
for(n = size; n > 1; n--) {makeHeap(ary, n);
swap(

(7)

);

}
}
(7) の解答群

20
プログラミングスキル

ア．&ary[0], &ary[n - 1]

イ．&ary[0], &ary[n]ウ．&ary[0], &ary[size - n]エ．&ary[0], &ary[size – n - 1]

令和6年(2024年)4月から選択問題(問題5)に改訂があります。
改訂の詳細は以下URLをご覧ください。

https://jken.sgec.or.jp/common/pdf/information/jken̲r6̲kaitei̲jsystem̲programming.pdf
選択問題

表計算の問題

次の表計算ソフトの仕様を読み，各設問に答えよ。
この問題で使用する表計算ソフトの仕様は下記のとおりである。
RANK 関数
範囲内の数値を並べたときに何番目になるか(順位)を返す。順序は，降順の場合は0，昇順の場合は 1 を設定する。なお，範囲内の検査値に同じものがあれば同じ順位を返し，以降の順位に欠番が生じる。
書式：RANK(検査値，範囲，順序)
SUM 関数
範囲内の数値を合計した値を返す。
書式：SUM(範囲)
選
択問
題

SUMIFS 関数
指定した条件範囲の中で，条件に一致するセルの合計対象範囲に対応するセルの値

表
計
算の合計値を返す。なお，複数の条件を指定でき，その場合はすべての条件を満たした場合に，その合計値を返す。
書式：SUMIFS(合計対象範囲, 条件範囲 1, 条件 1, [条件範囲 2, 条件 2], ・・・)
VLOOKUP 関数
検索範囲から検索値を探し，位置で指定した列の値を返す。位置は１から始まる相対的な値であり，検索範囲中に見つけた行の中で，左から何番目の列かを示す。
なお，検索方法は 0 の場合は完全に一致する値を，1 の場合は検索値以下の最大値を探す。ただし，1 の場合の検索範囲は昇順に並べ替えておく必要がある。
書式：VLOOKUP(検索値，検索範囲，位置，検索方法)式＝に続いて計算式や関数などを入力する。
セル番地の絶対参照
セル番地に＄を付けることで，絶対番地(絶対参照)を表す。
別シートの参照
ワークシート名に「！」を付けてセル位置を指定することにより別シートを参照できる。
例：シート名「集計」のセル A1 を参照する場合は，「集計!A1」と記述する。

21
プログラミングスキル

令和6年(2024年)4月から選択問題(問題5)に改訂があります。
改訂の詳細は以下URLをご覧ください。

https://jken.sgec.or.jp/common/pdf/information/jken̲r6̲kaitei̲jsystem̲programming.pdf
この問題で使用するマクロの仕様は下記のとおりである。
［マクロの記述］
マクロは一意のマクロ名を付けて宣言する。ワークシートには複数のマクロを格納できる。なお，マクロではワークシートと同様の関数を式内で利用することができる。
変数の型には，数値型，文字列型及び論理型があり，宣言することで使用できる。
また変数名に続けて添字を「[」と「]」で囲むことで配列変数として宣言できる。
添字が複数ある場合は「,」で区切る。添字は 0 から始まる。
［マクロの記述形式］
記述形式

説明

○マクロ：マクロ名

マクロを宣言する。

○変数の型：変数名

変数を宣言する。

・変数 ← 式

変数に式の値を代入する。

/* 文 */

注釈を記述する。

条件式

選択処理
条件式が真の時は処理１を実行し，偽の時

・処理１

は処理２を実行する。
・処理２
■ 条件式

前判定繰返し処理

・処理

条件式が真の間，処理を実行する。

■■ 変数：初期値, 条件式, 増分
・処理

繰返し処理
開始時点で変数に初期値が格納され，条件■式が真の間，処理を繰り返す。また，繰り返すごとに，変数に増分を加える。

［演算子と優先順位］
演算の種類

22
プログラミングスキル

演算子

単項演算

＋, －, Not

乗除演算＊, ／, ％

加減演算

＋, －

関係演算

＞, ＜, ≧, ≦, ＝, ≠

論理積

And

論理和

Or

優先順位
高

低

令和6年(2024年)4月から選択問題(問題5)に改訂があります。
改訂の詳細は以下URLをご覧ください。

https://jken.sgec.or.jp/common/pdf/information/jken̲r6̲kaitei̲jsystem̲programming.pdf［セルの参照］
マクロ中からセル番地を指定して，セルの値を参照することができる。セル番地を指定した絶対参照と，基点となるセル番地とそこからの相対的な位置を指定した
相対参照がある。相対参照では，セル番地，行方向の相対位置，列方向の相対位置を「,」で区切って順に指定する。
セルの絶対参照と相対参照の例
・wk_a ← 絶対(A1)/* A1 番地 */・wk_b ← 絶対(Sheet1!A1) /* Sheet1 の A1 番地 */・wk_c ← 相対(A1, 1, 2)/* C2 番地 */（注）セル A1 から 1 行，2 列移動したセル C2 が参照される。
J コンビニエンスストアでは，売上管理に表計算ソフトを利用している。扱っている商品の商品表と分類表は，それぞれ｢商品表｣ワークシートと，｢分類表｣ワークシー
トにまとめている。

図１｢商品表｣ワークシート

図２｢分類表｣ワークシート

レジスタからの情報を基に「売上表」ワークシートを作成している。図３では 2023
年８月の売上が 120 行まで入力されている。

23
プログラミングスキル

令和6年(2024年)4月から選択問題(問題5)に改訂があります。
改訂の詳細は以下URLをご覧ください。

https://jken.sgec.or.jp/common/pdf/information/jken̲r6̲kaitei̲jsystem̲programming.pdf

図３
＜設問１＞

｢売上表｣のワークシート

次の｢売上表｣ワークシートの拡張に関する記述中の

(1)

に入れるべ

き適切な字句を解答群から選べ。

図４｢売上表｣の拡張ワークシート

時間帯の列を作成し，そのセル E2 に売上のあった時間から時間帯を求める。｢売上表｣の拡張ワークシートでは，マクロ Jikantai を実行する。なお，時間帯は次のように指定する。
深夜：00:00:00 から 06:00:00 未満

24
プログラミングスキル

朝：06:00:00 から 12:00:00 未満

昼：12:00:00 から 18:00:00 未満

夜：18:00:00 から 24:00:00 未満

令和6年(2024年)4月から選択問題(問題5)に改訂があります。
改訂の詳細は以下URLをご覧ください。

https://jken.sgec.or.jp/common/pdf/information/jken̲r6̲kaitei̲jsystem̲programming.pdf［マクロ Jikantai の説明］
列 B（時間）の値から時間帯を求め，列 E（時間帯）に格納する。
なお，この問題では時間：分：秒を引用符（" "）で囲んで比較した場合，日付型に変換されるものとする。
［マクロJikantai］○マクロ：Jikantai○数値型：row○文字型：時間帯○日付型：売上時間■ row: 1, row＜120, 1
・/* 売上が無い位置まで繰り返す */(1)▲ 売上時間 ＜ "06:00:00"
・時間帯 ← "深夜"▲ 売上時間 ＜ "12:00:00"
・時間帯 ← "朝"▲ 売上時間 ＜ "18:00:00"
・時間帯 ← "昼"・時間帯 ← "夜"
▼
▼
▼
・

(2)

/* 時間帯セルに値を代入する */■(1) ，(2) の解答群
ア．売上時間 ← 相対(A1, row, 1)
イ．売上時間 ← 相対(A1, row, 4)
ウ．時間帯 ← 相対(A1, row, 1)エ．時間帯 ← 相対(A1, row, 4)オ．相対(A1, row, 1) ← 売上時間
カ．相対(A1, row, 4) ← 時間帯
売上金額の列を作成し，そのセル F2 に次の式を入力し，セル F3～F120 まで複写した。
=(3)

分類 ID の列を作成し，そのセル G2 に次の式を入力し，セル G3～G120 まで複写した。
=(4)

分類名の列を作成し，そのセル H2 に次の式を入力し，セル H3～H120 まで複写した。
=(5)

行 121 に合計金額を求める。セル F121 に次の式を入力した。
= SUM(F2:F120)

25
プログラミングスキル

令和6年(2024年)4月から選択問題(問題5)に改訂があります。
改訂の詳細は以下URLをご覧ください。

https://jken.sgec.or.jp/common/pdf/information/jken̲r6̲kaitei̲jsystem̲programming.pdf(3) の解答群
ア．VLOOKUP(C2, 商品表!A$2:C$31, 3, 0)
イ．VLOOKUP(C2, 商品表!A$2:C$31, 3, 0) * D2
ウ．VLOOKUP(C2, 商品表!A2:C31, 3, 0)
エ．VLOOKUP(C2, 商品表!A2:C31, 3, 0) * D2(4) ，(5) の解答群
ア．VLOOKUP(C2, 商品表!A$2:D$31, 2, 0)
イ．VLOOKUP(C2, 商品表!A$2:D$31, 3, 0)
ウ．VLOOKUP(C2, 商品表!A$2:D$31, 4, 0)
エ．VLOOKUP(G2, 分類表!A$2:B$15, 2, 0)
オ．VLOOKUP(G2, 分類表!A$2:B$15, 3, 0)
カ．VLOOKUP(G2, 分類表!A$2:B$15, 4, 0)＜設問２＞

次の｢分類別集計｣ワークシートの作成に関する記述中の

(1)

に入れ

るべき適切な字句を解答群から選べ。

図５｢分類別集計｣のワークシート

A，B 列の分類 ID，分類名は，｢分類表｣ワークシートから複写した。
分類ごと時間帯ごとの売上数を求めるため，セル C2 に次の式を入力し，セル D2～
F2，セル C3～F15 まで複写した。売上表は拡張したワークシートを利用する。
= SUMIFS((6), 売上表!$G$2:$G$120, $A2,

(7))

合計数量の列を作成し，そのセル G2 に次の式を入力し，セル G3～G15 まで複写した。
= SUM(C2:F2)
順位の列を作成し，セル H2 に次の式を入力し，セル H3～H15 まで複写した。なお，順位は合計数量の多い順に表示する。
=

26
プログラミングスキル(8)令和6年(2024年)4月から選択問題(問題5)に改訂があります。
改訂の詳細は以下URLをご覧ください。

https://jken.sgec.or.jp/common/pdf/information/jken̲r6̲kaitei̲jsystem̲programming.pdf
行 16 に各時間帯の売上数量の合計と売上数量の合計を求める。セル C16 に次の式を入力し，セル D16～G16 まで複写した。
= SUM(C2:C15)(6) ，(7) の解答群
ア．売上表!D$2:D$120
イ．売上表!$D2:D$120
ウ．売上表!$D$2:$D$120
エ．売上表!E$2:$E120, C$1
オ．売上表!$E$2:$E$120, C$1
カ．売上表!$E$2:$E$120, $C$1
(8) の解答群
ア．RANK(G2, G$2:G$15, 0)

イ．RANK(G2, G2:G15, 0)

ウ．RANK(G2, G$2:G$15, 1)

エ．RANK(G2, G2:G15, 1)

27
プログラミングスキル

令和6年(2024年)4月から選択問題(問題5)に改訂があります。
改訂の詳細は以下URLをご覧ください。

https://jken.sgec.or.jp/common/pdf/information/jken̲r6̲kaitei̲jsystem̲programming.pdf
選択問題

アセンブラの問題

次のアセンブラ言語CASLⅡプログラムの説明を読み，各設問に答えよ。
［プログラムの説明］
二つの自然数 A と B について，A を B で割ったときの商を X，余りを Y とすると，「Aと B の最大公約数」は，「B と Y の最大公約数」に等しいという定理がある。
この定理を使って，二つの自然数の最大公約数を求める方法がユークリッドの互除法であり，その手順を次に示す。
［ユークリッドの互除法の手順］① 二つの自然数AとBの大きい方をGR1に，小さい方をGR2に設定する。
② GR2の値をYに格納し，(GR1)÷(GR2)の余りをGR1に求める。
③ GR1＝0ならばYが最大公約数となり手順を終了する。
GR1≠0ならばGR1をGR2に，YをGR1にして②へ戻る。
［プログラム］
行番号

ラベル

命令

100

EUCLID

START

110

RPUSH

120

LD

GR2,B

130

LD

GR1,A

140

CPA

GR1,B

150

プログラミングスキル

コメント

;手順①

(1)

160

JZE

OWARI

170

LD

GR1,B

180

LD

GR2,A

190

JOZAN

ST

GR2,Y

200

LOOP

SUBA

GR1,Y

210

JPL

LOOP

220

JZE

YZERO

230

28

オペランド

;手順②の除算;余りゼロが確定

(2)

240

LD

GR2,GR1

250

LD

GR1,Y

260

JUMP

JOZAN

270

YZERO

280

OWARI

(3)
ST

290

RPOP

300

RET

GR1,GCM;手順③の手順②に戻る処理;最大公約数が確定

令和6年(2024年)4月から選択問題(問題5)に改訂があります。
改訂の詳細は以下URLをご覧ください。

https://jken.sgec.or.jp/common/pdf/information/jken̲r6̲kaitei̲jsystem̲programming.pdf
行番号

ラベル

命令

オペランド

310

A

DC

161

320

B

DC

230

330

Y

DS

1

340

GCM

DS

1

350

END

＜設問１＞

プログラム中の(1)

コメントに入れるべき適切な字句を解答群から選べ。

(1) の解答群
ア．JMI JOZAN

イ．JMI OWARI

ウ．JPL JOZANエ．JPL OWARI(2) の解答群
ア．ADDA GR1,Y

イ．ADDA GR2,Y

ウ．SUBA GR1,Yエ．SUBA GR2,Y(3) の解答群
ア．LAD GR1,=0

イ．LAD GR1,Y

ウ．LD

エ．LD

＜設問２＞

GR1,=0

GR1,Y

次のプログラムのトレースに関する記述中の

1)

選
択
問
題

に入れるべき適切な数値を解答群から選べ。ただし解答群の数値はすべて 10 進数である。

ア
セ
ン
ブ
ラ

プログラムで設定している A=161，B=230 で実行した場合，行番号 190 の命令を初めて実行する直前の GR1 の値は(4)，GR2 の値は

(5)

である。

同じく，行番号 190 の命令が 2 回目に実行される時の GR2 の値はに実行される時の GR2 の値は

(7)

(6)

，3 回目

である。

(4) ～ (7) の解答群
ア．17

イ．23

ウ．45

エ．69

オ．161

カ．230

29
プログラミングスキル

令和6年(2024年)4月から選択問題(問題5)に改訂があります。
改訂の詳細は以下URLをご覧ください。

https://jken.sgec.or.jp/common/pdf/information/jken̲r6̲kaitei̲jsystem̲programming.pdf

30
プログラミングスキル