2010年度 情報関係基礎 第3問 問2#
第3問
問2
次の文章を読み、 図中の空欄【オ】〜【コ】に入れるのに最も適当なものを、 次ページのそれぞれの解答群のうちから一つずつ選べ。
図1のように、
配列Suji
と配列KuraiMoji
に、漢数字を格納しておく。
なおSuji[1]
とKuraiMoji[1]
には、空文字を格納しておく。
(01) Suji[1]←「」, Suji[2]←「二」, Suji[3]←「三」
(02) Suji[4]←「四」,Suji[5]←「五」,Suji[6]←「六」
(03) Suji[7]←「七」,Suji[8]←「八」,Suji[9]←「九」
(04) KuraiMoji[4]←「千」,KuraiMoji[3]←「百」
(05) KuraiMoji[2]←「十」,KuraiMoji[1]←「」
一万未満の数n
を漢数字で表示する手続きを図2に示す。
ただし、二つの整数a≧0
、b>0
に対し、
a÷b
はa
をb
で割った商の整数部分を、
a%b
はa
をb
で割った余りを、それぞれ計算する。
(01) kurai←1000
(02) ketaを4から1まで1ずつ減らしながら,
(03) | d ← n ÷ kurai
(04) | もしd ≠ 0ならば
(05) | | もし【オ】ならば
(06) | | | 【カ】を表示する
(07) | | を実行し,そうでなければ
(08) | | | 【キ】を表示する
(09) | | | 【ク】を表示する
(10) | | を実行する
(11) | を実行する
(12) | n ← 【ケ】 % 【コ】
(13) | kurai ← kurai ÷ 10
(14) を繰り返す
keta ≠ 1
keta = 1
d = 1 かつ keta ≠ 1
d = 1 かつ keta = 1
d ≧ 2 かつ keta ≠ 1
d ≧ 2 かつ keta = 1
「一」
Suji[d]
KuraiMoji[d]
「十」
Suji[keta]
KuraiMoji[keta]
「百」
Suji[n]
KuraiMoji[n]
「千」
Suji[kurai]
(註: マークシートは “a”)KuraiMoji[kurai]
(註: マークシートは “b”)
d
10
keta
n
1000
kurai
解答#
解答用のノートブックを使ってください。 ミスリードを防ぐため、冒頭で次のようなプロンプトを与えてみてください。
%%ai vioras
今から擬似コードでプログラミングしますが、擬似コードの実行環境はありません。
擬似コードのテンプレートを与えるので選択肢から穴埋めを行ってください。
さらに、あなたが提示する解答を検証するためPythonのプログラムコードも同時に提示して下さい。
補足#
問題番号 (配点) |
設問 |
解答記号 |
正解 |
配点 |
備考 |
---|---|---|---|---|---|
第3問 (35) |
2 |
オ |
3 |
2 |
|
カ |
0 |
2 |
「一」 |
||
キ |
1 |
3 |
|
||
ク |
5 |
3 |
|
||
ケ |
3 |
3 |
|
||
コ |
5 |
|
問2 1万未満の数について漢数字表示を行う手続きを題材に、手続きを読み取り構成する能力を問う問題である。本問中で提示された手続きが、表示すべき文字として空文字を用いることで、例外的な動作に対する場合分けを減らしているものであることを読み取る必要がある。 さらに、[オ]と[カ]及び[キ]・[ク] については条件と動作の両方が空欄となっているので、手続きを適切に構成する能力が問われる。また、整数除算と剰余を用いて数を1桁 けたずつ取り出す手続きを構成させる設問がある。
例外的な動作についての手続きを構成させる[オ]と[カ]については、全体の正答率で約3割、予想以上の難問であった。空文字を用いて場合分けを減らすという考え方に、受験者が慣れていないものと思われる。 [キ]・[ク]は通常の場合の手続きの構成を問う設問であり、全体で約5割、予想よりも若干ではあるが低かった。場合分けを減らさずに、前問のとおりの場合分けを行う手続きについての設問であれば、正答率が上がったものと思われる。 数を1桁ずつ取り出す手続きについての設問では、全体で約3割の正答率であり、予想よりも低かった。