繰り返し

テーマ

プログラミング · 繰り返し · QUESTION 001

次のプログラムの実行した際の表示結果を答えよ。

(1)i を 1 から 5 まで 1 ずつ増やしながら繰り返す:
(2)⎿ 表示する("今のiは", i)
(3)表示する("繰り返し終了")
答えと解説を見る

答え今のiは1 今のiは2 今のiは3 今のiは4 今のiは5 繰り返し終了

解説iは1、2、3、4、5と変化し、各回で現在のiを1行ずつ表示します。
5回の繰り返しが終わると、ループの外にある「繰り返し終了」を最後に1回だけ表示します。

プログラミング · 繰り返し · QUESTION 002

次のプログラムの実行した際の表示結果を答えよ。

(1)sum = 0
(2)i を 1 から 5 まで 1 ずつ増やしながら繰り返す:
(3)| sum = sum + 3
(4)⎿ 表示する("現在の合計は", sum)
(5)表示する("最終的な合計は", sum)
答えと解説を見る

答え現在の合計は3 現在の合計は6 現在の合計は9 現在の合計は12 現在の合計は15 最終的な合計は15

解説毎回3を加える処理では、初期値から3ずつ増えます。
1回目から5回目の値は3、6、9、12、15です。

プログラミング · 繰り返し · QUESTION 003

次のプログラムの実行した際の表示結果を答えよ。

(1)sum = 0
(2)i を 1 から 5 まで 1 ずつ増やしながら繰り返す:
(3)| sum = sum + i
(4)⎿ 表示する("現在の合計は", sum)
(5)表示する("最終的な合計は", sum)
答えと解説を見る

答え現在の合計は1 現在の合計は3 現在の合計は6 現在の合計は10 現在の合計は15 最終的な合計は15

解説変数iを毎回加えるなら、1、2、3、4、5を順番に合計します。
累積値は1、3、6、10、15と変化します。

プログラミング · 繰り返し · QUESTION 004

次のプログラムの実行した際の表示結果を答えよ。

(1)product = 1
(2)i を 1 から 5 まで 1 ずつ増やしながら繰り返す:
(3)| product = product * 2
(4)⎿ 表示する("現在の積は", product)
(5)表示する("最終的な積は", product)
答えと解説を見る

答え現在の積は2 現在の積は4 現在の積は8 現在の積は16 現在の積は32 最終的な積は32

解説値を毎回2倍にする処理を5回行うと、初期値1から2の5乗になります。
結果は32です。

プログラミング · 繰り返し · QUESTION 005

次のプログラムでteiに3、bekiに4と入力した場合の実行した際の表示結果を答えよ。

(1)tei = 【外部からの入力】 #3と入力
(2)beki = 【外部からの入力】 #4と入力
(3)product = 1
(4)i を 1 から beki まで 1 ずつ増やしながら繰り返す:
(5)⎿ product = product * tei
(6)表示する(tei, "の", beki, "乗は", product)
答えと解説を見る

答え3の4乗は81

解説3を4回掛ける処理は3の4乗です。
3×3×3×3を順に計算すると81になります。

プログラミング · 繰り返し · QUESTION 006

次のプログラムでfactorialに5と入力した場合の実行した際の表示結果を答えよ。

(1)factorial = 【外部からの入力】 #5と入力
(2)product = 1
(3)i を 1 から factorial まで 1 ずつ増やしながら繰り返す:
(4)⎿ product = product * i
(5)表示する(factorial, "の階乗は", product)
答えと解説を見る

答え5の階乗は120

解説階乗は、1から指定された数までをすべて掛けます。
5!は1×2×3×4×5なので120です。

プログラミング · 繰り返し · QUESTION 007

次のプログラムの実行した際の表示結果を答えよ。
ただし、要素数(配列)は配列の要素数を返すものとする。

(1)Tokuten = [5, 7, 8, 4]
(2)sum = 0
(3)i を 0 から 要素数(Tokuten) - 1 まで 1 ずつ増やしながら繰り返す
(4)⎿ sum = sum + Tokuten[i]
(5)average = sum / 4
(6)表示する("4人の平均点は", average, "点です")
答えと解説を見る

答え4人の平均点は6点です

解説合計を求めるループでは、各値をsumへ加えます。
5+7+8+4は24で、4個の平均は6です。

プログラミング · 繰り返し · QUESTION 008

次のプログラムの実行した際の表示結果を答えよ。

(1)i を 1 から 10 まで 1 ずつ増やしながら繰り返す:
(2)| もし i % 3 == 0 ならば:
(3)⎿ ⎿ 表示する(i, "は3の倍数")
(4)表示する("繰り返し終了")
答えと解説を見る

答え3は3の倍数 6は3の倍数 9は3の倍数 繰り返し終了

解説iは1から10まで変化し、そのうち3で割った余りが0になる3、6、9で条件が成立します。
その3行を表示した後、繰り返しの外にある「繰り返し終了」を1回表示します。

プログラミング · 繰り返し · QUESTION 009

次のプログラムの実行した際の表示結果を答えよ。

(1)count = 0
(2)i を 1 から 10 まで 1 ずつ増やしながら繰り返す:
(3)| もし i % 3 == 0 ならば:
(4)⎿ ⎿ count = count + 1
(5)表示する("3の倍数の個数は", count)
答えと解説を見る

答え3の倍数の個数は3

解説1から10までにある3の倍数は3、6、9の三つです。
条件が成り立つたびにcountを1増やすため、最後は「3の倍数の個数は3」と表示します。

プログラミング · 繰り返し · QUESTION 010

次のプログラムの実行した際の表示結果を答えよ。

(1)count = 0
(2)i を 1 から 10 まで 1 ずつ増やしながら繰り返す:
(3)| もし i % 2 == 0 ならば:
(4)| | count = count + 1
(5)| そうでなくもし i % 3 == 0 ならば:
(6)⎿ ⎿ count = count + 1
(7)表示する("2または3の倍数の個数は", count)
答えと解説を見る

答え2または3の倍数の個数は7

解説1から10までで該当するのは2、3、4、6、8、9、10の七つです。
6は2と3の両方の倍数ですが、ifが成立するとelse ifは調べないため二重に数えず、countは7になります。

プログラミング · 繰り返し · QUESTION 011

次のプログラムの実行した際の表示結果を答えよ。

(1)sum = 0
(2)i を 1 から 5 まで 1 ずつ増やしながら繰り返す:
(3)| もし i % 2 == 0 ならば:
(4)| | sum = sum + i
(5)⎿ ⎿ 表示する("現在の合計は", sum)
(6)表示する("最終的な合計は", sum)
答えと解説を見る

答え現在の合計は2 現在の合計は6 最終的な合計は6

解説iは1から5まで変化し、偶数の2と4だけをsumへ加えます。
i=2で合計2、i=4で合計6を表示し、繰り返し後に「最終的な合計は6」と表示します。

プログラミング · 繰り返し · QUESTION 012

次のプログラムでnumberに5→8→3→9→2と入力したときの実行した際の表示結果を答えよ。

(1)max_value = 0
(2)i を 1 から 5 まで 1 ずつ増やしながら繰り返す:
(3)| number = 【外部からの入力】
(4)| もし number > max_value ならば:
(5)⎿ ⎿ max_value = number
(6)表示する("最大値は", max_value)
答えと解説を見る

答え最大値は9

解説max_valueは0から始まります。
5で5、8で8へ更新され、3では変わらず、9で9へ更新され、最後の2でも変わらないため、「最大値は9」と表示されます。

プログラミング · 繰り返し · QUESTION 013

次のプログラムの実行した際の表示結果を答えよ。

(1)i を 1 から 9 まで 1 ずつ増やしながら繰り返す:
(2)| j を 1 から 9 まで 1 ずつ増やしながら繰り返す:
(3)⎿ ⎿ 表示する(i, "×", j, "=", i * j)
答えと解説を見る

答え1×1=1 1×2=2 ︙ 1×9=9 2×1=2 2×2=4 ︙ 9×8=72 9×9=81

解説二重ループでは、外側の値を固定したまま内側を一周します。
行と列の組合せを作るので、九九のような表を生成できます。

プログラミング · 繰り返し · QUESTION 014

次のプログラムの実行した際の表示結果を答えよ。
ただし、2次元配列Kukuの添字は1から始まる。

(1)i を 1 から 5 まで 1 ずつ増やしながら繰り返す:
(2)| j を 1 から 3 まで 1 ずつ増やしながら繰り返す:
(3)⎿ ⎿ Kuku[i, j] = i * j
(4)表示する(Kuku)
答えと解説を見る

答え1 2 3 2 4 6 3 6 9 4 8 12 5 10 15

解説二重ループの各組合せについて、行番号と列番号に応じた値を行列へ代入します。
外側のループが行、内側が列を担当します。

プログラミング · 繰り返し · QUESTION 015

次のプログラムの実行した際の表示結果を答えよ。

(1)count = 0
(2)i を 1 から 5 まで 1 ずつ増やしながら繰り返す:
(3)| j を i から 5 まで 1 ずつ増やしながら繰り返す:
(4)| | もし i + j > 5 ならば:
(5)| | | 表示する("i=", i, ", j=", j)
(6)⎿ ⎿ ⎿ count = count + 1
(7)表示する("条件を満たす組の数は", count)
答えと解説を見る

答えi=1, j=5 i=2, j=4 i=2, j=5 i=3, j=3 i=3, j=4 i=3, j=5 i=4, j=4 i=4, j=5 i=5, j=5 条件を満たす組の数は9

解説内側のループをj=iから始めると、同じ組合せを重複して調べずに済みます。
i+j>5を満たす組を数えると9個です。

プログラミング · 繰り返し · QUESTION 016

次のプログラムの実行した際の表示結果を答えよ。

(1)sum = 0, i = 0
(2)i < 5 の間繰り返す:
(3)| i = i + 1
(4)| sum = sum + i
(5)⎿ 表示する("現在のsumは", sum ,", iは", i)
(6)表示する("最終的なsumは", sum)
答えと解説を見る

答え現在のsumは1, iは1 現在のsumは3, iは2 現在のsumは6, iは3 現在のsumは10, iは4 現在のsumは15, iは5 最終的なsumは15

解説while文は条件が真の間だけ続きます。
iを1から増やしながら足すと、1+2+3+4+5で15になります。

プログラミング · 繰り返し · QUESTION 017

次のプログラムの実行した際の表示結果を答えよ。

(1)sum = 0, i = 1
(2)i <= 5 の間繰り返す:
(3)| もし i % 2 == 0 ならば:
(4)| ⎿ sum = sum + i
(5)⎿ i = i + 1
(6)表示する("最終的なsumは", sum)
答えと解説を見る

答え最終的なsumは6

解説1から5を調べ、偶数だけを合計します。
対象は2と4なので、sumは6です。

プログラミング · 繰り返し · QUESTION 018

次のプログラムの実行した際の表示結果を答えよ。

(1)sum = 0, i = 0
(2)sum < 20 の間繰り返す:
(3)| i = i + 1
(4)| sum = sum + i
(5)⎿ 表示する("現在のsumは", sum ,", iは", i)
(6)表示する("sumが20を超えるのはiが", i, "のときです")
答えと解説を見る

答え現在のsumは1, iは1 現在のsumは3, iは2 現在のsumは6, iは3 現在のsumは10, iは4 現在のsumは15, iは5 現在のsumは21, iは6 sumが20を超えるのはiが6のときです

解説sumが20未満の間、iを加えていきます。
1から6までを足した時点で21となり、条件を満たさなくなって終了します。

プログラミング · 繰り返し · QUESTION 019

次のプログラムの実行した際の表示結果を答えよ。

(1)sum = 0, ai = 1
(2)ai < 100 の間繰り返す:
(3)| sum = sum + ai
(4)⎿ ai = 2 * ai +3
(5)表示する("100未満のaiの和は", sum)
答えと解説を見る

答え100未満のaiの和は109

解説aiは毎回2×ai+3で更新されるため、100未満では1、5、13、29、61と進み、次の125で繰り返しを終えます。
加えられた値の合計は1+5+13+29+61=109なので、「100未満のaiの和は109」と表示されます。

プログラミング · 繰り返し · QUESTION 020

次のプログラムの実行した際の表示結果を答えよ。

(1)a = 0, b = 1, count = 1
(2)b < 100 の間繰り返す:
(3)| t = a + b
(4)| a = b
(5)| b = t
(6)⎿ count = count + 1
(7)表示する("変数bの値が100以上になるのは", count, "項目")
答えと解説を見る

答え変数bの値が100以上になるのは12項目

解説初期値a=0、b=1から、bは1、1、2、3、5、8、13、21、34、55、89、144と進みます。
bが初めて100以上になる144に更新されたときcountは12なので、「変数bの値が100以上になるのは12項目」と表示されます。

プログラミング · 繰り返し · QUESTION 021

kaitouに1,2,3,…と順に入力していく。
次のプログラムの実行した際の表示結果を答えよ。

(1)target = 5
(2)kaitou = 【外部からの入力】#1と入力
(3)target != kaitou の間繰り返す:
(4)| 表示する("targetは", kaitou, "ではありません")
(5)⎿ kaitou = 【外部からの入力】#2,3,4,…と入力
(6)表示する("正解です。targetは", kaitou, "でした")
答えと解説を見る

答えtargetは1ではありません targetは2ではありません targetは3ではありません targetは4ではありません 正解です。targetは5でした

解説入力値を順に調べ、目的の値と一致したらループを止めます。
目的値5なら、それより前の値を処理した後に見つかります。

プログラミング · 繰り返し · QUESTION 022

次のプログラムでnに6と入力したときの実行した際の表示結果を答えよ。

(1)n = 【外部からの入力】 #6と入力
(2)n != 1 の間繰り返す:
(3)| もし n % 2 == 0 ならば:
(4)| | n = n / 2
(5)| そうでなければ:
(6)| ⎿ n = 3 * n + 1
(7)⎿ 表示する("現在のnは", n)
(8) 表示する("処理終了。nの値が1になりました。")
答えと解説を見る

答え現在のnは3 現在のnは10 現在のnは5 現在のnは16 現在のnは8 現在のnは4 現在のnは2 現在のnは1 処理終了。nの値が1になりました。

解説偶数なら2で割り、奇数なら3倍して1を加える操作を1になるまで続けます。
6からは3、10、5、16、8、4、2、1と進みます。

プログラミング · 繰り返し · QUESTION 023

配列Tokutenには5人の生徒の得点が入力されている。
60点以上を合格、59点以下は不合格とする。
配列Gouhiに「合格」または「不合格」を入力するプログラムとなるように、空欄に入る最も適切なものを選べ。
ただし、配列の添字は0から始まるものとし、要素数(配列)は配列の要素数を返すものとする。

(1)Tokuten = [79, 55, 69, 80, 32]
(2)Gouhi = [" ", " ", " ", " ", " "]
(3)i を( ア )繰り返す:
(4)| もし( イ )ならば:
(5)| ⎿ Gouhi[i] = "合格"
(6)| そうでなければ:
(7)⎿ ⎿ Gouhi[i] = "不合格"

( ア )
1.0 から 要素数(Tokuten) まで 1 ずつ増やしながら
2.0 から 要素数(Tokuten) - 1 まで 1 ずつ増やしながら
3.1 から 要素数(Tokuten) まで 1 ずつ増やしながら
4.1 から 要素数(Tokuten) - 1 まで 1 ずつ増やしながら

( イ )
1.Tokuten[i] >= 60
2.Tokuten[i] <= 59
3.Gouhi[i] == "合格"
4.Gouhi[i] == "不合格"
答えと解説を見る

答えア 2.0 から 要素数(Tokuten) - 1 まで 1 ずつ増やしながら イ 1.Tokuten[i] >= 60

解説5要素の添字は0~4なので、iは0から要素数(Tokuten)−1まで動かします。
各Tokuten[i]が60以上なら同じ位置のGouhi[i]を「合格」にし、それ以外を「不合格」にするため、アは選択肢2、イは選択肢1です。

プログラミング · 繰り返し · QUESTION 024

配列Dataに格納された数のうち最大のものを表示するプログラムとなるように、空欄に入る最も適切なものを選べ。
ただし、配列の添字は0から始まるものとし、要素数(配列)は配列の要素数を返すものとする。

(1)Data = [54, 23, 34, 67, 49]
(2)max_value = Data[0]
(3)i を( ア )まで 1 ずつ増やしながら繰り返す:
(4)| もし( イ )ならば:
(5)⎿ ⎿ max_value = Data[i]
(6)表示する("配列Data内の最大の数は", max_value)
( ア )
1.0 から 要素数(Data) - 2
2.1 から 要素数(Data) - 1
3.2 から 要素数(Data)
( イ )
1.Data[i] > max_value
2.Data[i] < max_value
3.Data[i] > Data[i - 1]
4.Data[i] < Data[i - 1]
答えと解説を見る

答えア 2.1 から 要素数(Data) - 1 イ 1.Data[i] > max_value

解説最大値を探すときは、最初の要素を仮の最大値にし、残りを順に比較します。
現在の最大値より大きい要素が出たとき更新します。

プログラミング · 繰り返し · QUESTION 025

入力された配列Dataの要素を1つずつ左にずらし、先頭の要素は配列の末尾に移動するプログラムとなるように、空欄に入る最も適切なものを選べ。
ただし、配列の添字は0から始まるものとし、要素数(配列)は配列の要素数を返すものとする。

(1)Data =【外部からの入力】
(2)tmp = Data[0]
(3)i を 1 から ( ア ) まで 1 ずつ増やしながら繰り返す:
(4)⎿ (  イ  )
(5)Data[要素数(Data) - 1] = tmp

( ア )
1.要素数(Data) - 2
2.要素数(Data) - 1
3.要素数(Data)
4.要素数(Data) + 1

(  イ  )
1.Data[i - 1] = Data[i]
2.Data[i] = Data[i - 1]
3.Data[i + 1] = Data[i]
4.Data[i] = Data[i + 1]
答えと解説を見る

答えア 2.要素数(Data) - 1 イ 1.Data[i - 1] = Data[i]

解説配列を左へ一つずらすには、2番目以降の値を一つ前の要素へ順番にコピーします。
最後の要素には、先頭を退避しておいた値を入れます。

プログラミング · 繰り返し · QUESTION 026

入力された配列Dataの要素の並びを逆順にするプログラムとなるように、空欄に入る最も適切なものを選べ。
a ÷ bはaをbで割ったときの商を返す。
配列の添字は0から始まるものとし、要素数(配列)は配列の要素数を返すものとする。

(1)Data = 【外部からの入力】
(2)i を 0 から( ア ) まで 1 ずつ増やしながら繰り返す:
(3)| tmp = Data[i]
(4)| Data[i] = Data[( イ )]
(5)⎿ Data[( イ )] = tmp

( ア )
1.要素数(Data)
2.要素数(Data) - 1
3.要素数(Data) ÷ 2
4.要素数(Data) ÷ 2 - 1
( イ )
1.要素数(Data) - i
2.要素数(Data) - i + 1
3.要素数(Data) - i - 1
答えと解説を見る

答えア 4.要素数(Data) ÷ 2 - 1 イ 3.要素数(Data) - i - 1

解説反転では、先頭と末尾、次の要素と末尾から二番目を交換します。
中央までの前半だけを処理すれば、同じ組を二度交換せずに済みます。

プログラミング · 繰り返し · QUESTION 027

1から100の整数のうちで、2の倍数または3の倍数であるが5の倍数でも7の倍数でもないものの個数を数えるプログラムとなるように、空欄に入る最も適切なものを選べ。

(1)count = 0
(2)i を 1 から 100 まで 1 ずつ増やしながら繰り返す:
(3)| もし ( ア ) ならば:
(4)| | もし ( イ ) ならば:
(5)⎿ ⎿ ⎿ count = count + 1
(6)表示する("条件を満たす数は", count, "個あります")

( ア )
1.(i % 2 == 0) and (i % 3 == 0)
2.(i % 2 == 0) or (i % 3 == 0)
3.not((i % 2 == 0) and (i % 3 == 0))
4.not((i % 2 == 0) or (i % 3 == 0))

( イ )
1.(i % 5 == 0) and (i % 7 == 0)
2.(i % 5 == 0) or (i % 7 == 0)
3.not((i % 5 == 0) and (i % 7 == 0))
4.not((i % 5 == 0) or (i % 7 == 0))
答えと解説を見る

答えア 2.(i % 2 == 0) or (i % 3 == 0) イ 4.not((i % 5 == 0) or (i % 7 == 0))

解説二つの条件をORで結ぶと、どちらかを満たす要素が選ばれます。
notで全体を否定すると、5の倍数でも7の倍数でもない条件になります。

プログラミング · 繰り返し · QUESTION 028

このプログラムは次の3つの性質を使ってユーザによって入力された2つの正の整数x, yの最大公約数を求めるものである。
性質1)xとyの値が等しいとき、xとyの最大公約数はxである。
性質2)xがyより大きいとき、xとyの最大公約数は(x - y)とyの最大公約数に等しい。
性質3)xがyより小さいとき、xとyの最大公約数はxと(y - x)の最大公約数に等しい。
空欄に入る最も適切なものを選べ。

(1)x = 【外部からの入力】
(2)y = 【外部からの入力】
(3)(  ア  )
(4)| もし( イ )ならば:
(5)| | x = x - y
(6)| そうでなければ:
(7)⎿ ⎿ y = y - x
(8)表示する("入力された2数の最大公約数は", x)

(  ア  )
1.もし x != y ならば:
2.もし x == y ならば:
3.x != y の間繰り返す:
4.x == y の間繰り返す:

( イ )
1.x != y
2.x == y
3.x > y
4.x < y
答えと解説を見る

答えア 3.x != y の間繰り返す: イ 3.x > y

解説ユークリッドの互除法を引き算で行う方法です。
大きい方から小さい方を引き、二つの値が等しくなった値が最大公約数です。

プログラミング · 繰り返し · QUESTION 029

このプログラムは次の2つの性質を使ってユーザによって入力された2つの正の整数x, yの最大公約数を求めるものである。
ただし、x % yはxをyで割ったあまりを求める演算である。
性質1)x % yが0と等しいとき、xとyの最大公約数はyである。
性質2)x % yが0と異なるとき、xとyの最大公約数はyと(x % y)の最大公約数に等しい。
空欄に入る最も適切なものを選べ。

(1)x = 【外部からの入力】
(2)y = 【外部からの入力】
(3)r = x % y
(4)( ア )の間繰り返す:
(5)| x = y
(6)| y = r
(7)⎿ r = x % y
(8)表示する("入力された2数の最大公約数は", ( イ ))

( ア )
1.r = 0
2.r != 0
3.x = 0
4.x != 0

( イ )
1.x
2.y
3.r
4.x % y
答えと解説を見る

答えア 2.r != 0 イ 2.y

解説余りrが0でない間、xへ現在のy、yへ現在のrを代入し、その新しいxとyで余りを計算し直します。
この操作で扱う数を小さくしていき、rが0になった時点のyが最大公約数です。

プログラミング · 繰り返し · QUESTION 030

このプログラムはユーザによって入力された12桁の整数を1桁ずつに分解し、要素数が12の配列ISBNcodeに格納するものである。
配列の要素番号は0から始まるものとし、0番目の要素に整数の12桁目、1番目の要素に整数の11桁目、……という形で格納する。
a % bはaをbで割ったときのあまりを返し、a ÷ bはaをbで割ったときの商を返す。
空欄に入る最も適切なものを選べ。

(1)number = 【外部からの入力】
(2)ISBNcode = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0] #配列を初期化
(3)i を 0 から 11 まで 1 ずつ増やしながら繰り返す:
(4)| (  ア  )
(5)⎿ (  イ  )
(6)表示する("配列ISBNcodeは", ISBNcode)
( ア )( イ )
1.ISBNcode[i] = number % 10
2.ISBNcode[i] = number ÷ 10
3.ISBNcode[11 - i] = number % 10
4.ISBNcode[11 - i] = number ÷ 10
5.number = number % 10
6.number = number ÷ 10
答えと解説を見る

答えア 3.ISBNcode[11 - i] = number % 10 イ 6.number = number ÷ 10

解説10で割った余りは、整数の一の位です。
右端から取り出した数字を配列の末尾側へ入れ、元の数を10で割って次の桁へ進みます。

プログラミング · 繰り返し · QUESTION 031

配列ISBNcodeは要素数が12で、各要素には0から9の整数値が入る。
与えられた配列ISBNcodeに対するチェックデジットを求めるプログラムとなるように、空欄に入る最も適切なものを選べ。
ここで、配列の要素番号は0から始まる。
チェックデジットは以下の方法で計算される数である。

1.要素の添字が奇数なら要素の値に1、偶数なら要素の値に3をかける。
2.それらの和を求める。
3.その和を10で割ったあまりを求める。
4.10からあまりを引く。ただし、あまりが0のときは0とする。
(1)ISBNcode =【外部からの入力】
(2)total_sum = 0
(3)i を 0 から 11 まで 1 ずつ増やしながら繰り返す:
(4)⎿ total_sum =  total_sum + ISBNcode[i] *( ア )
(5)check_digit = ( イ )
(6)表示する("チェックデジットは", check_digit)
( ア )
1.1
2.3
3. (2 + (-1) ** i)
4. (2 + (-1) ** (i + 1))

( イ )
1.total_sum % 10
2.10 - (total_sum % 10)
3.(total_sum % 10) - 10
4.(10 - (total_sum % 10)) % 10
答えと解説を見る

答えア 3. (2 + (-1) ** i) イ 4.(10 - (total_sum % 10)) % 10

解説iが偶数なら(−1)のi乗は1、奇数なら−1なので、2+(−1)のi乗は順に3と1になります。
したがってアは選択肢3です。
合計を10で割った余りをrとすると、(10−r)%10はr=0のときも0を返すため、イは選択肢4です。

プログラミング · 繰り返し · QUESTION 032

次のプログラムは、配列 Tokuten に格納されたテストの素点をもとに、階級が0~9、10~19、……、80~89、90~の度数分布を作成するものである。
度数分布は配列Dosuに格納する。
Dosu[0]に階級0~9の度数、Dosu[1]に階級10~19の度数、……、Dosu[9]に階級90~の度数を格納する。
素点は0から100の整数値である。
a % bはaをbで割ったときのあまりを返し、a ÷ bはaをbで割ったときの商を返す。
配列の添字は0から始まるものとし、要素数(配列)は配列の要素数を返すものとする。
空欄に入る最も適切なものを選べ。

(1)Tokuten = 【外部からの入力】
(2)Dosu = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0] #配列を初期化
(3)i を 0 から 要素数(Tokuten) - 1 まで 1 ずつ増やしながら繰り返す:
(4)| もし Tokuten[i] == 100 ならば:
(5)| | index = ( ア )
(6)| そうでなければ:
(7)| ⎿ index = ( イ )
(8)⎿ Dosu[index] = Dosu[index] + 1
(9)表示する("度数分布は", Dosu)

1.ア 9 イ Tokuten[i] % 10
2.ア 9 イ Tokuten[i] ÷ 10
3.ア 10 イ Tokuten[i] % 10
4.ア 10 イ Tokuten[i] ÷ 10
答えと解説を見る

答え2.ア 9 イ Tokuten[i] ÷ 10

解説0から9の10個の区間へ得点を分類するなら、得点を10で割った整数部分を添字として使えます。
90点台や100点は最後の区間へまとめます。

プログラミング · 繰り返し · QUESTION 033

支払い額に対して、その支払いに必要な一万円札、五千円札、千円札、五百円硬貨、百円硬貨、五十円硬貨、十円硬貨、五円硬貨、一円硬貨の最小枚数を計算するプログラムである。
a % bはaをbで割ったときのあまりを返し、a ÷ bはaをbで割ったときの商を返す。
配列の添字は0から始まるものとし、要素数(配列)は配列の要素数を返すものとする。
空欄に入る最も適切なものを選べ。

(1)kingaku = 【外部からの入力】
(2)kinsyu = [10000, 5000, 1000, 500, 100, 50, 10, 5, 1]
(3)i を 0 から 要素数(kinsyu) - 1 まで 1 ずつ増やしながら繰り返す:
(4)| ( ア )
(5)| ( イ )
(6)⎿ 表示する(kinsyu[i], "円は", maisu, "枚")

( ア )( イ )
1.kingaku = kingaku ÷ kinsyu[i]
2.kingaku = kingaku % kinsyu[i]
3.maisu = kingaku ÷ kinsyu[i]
4.maisu = kingaku % kinsyu[i]
答えと解説を見る

答えア 3.maisu = kingaku ÷ kinsyu[i] イ 2.kingaku = kingaku % kinsyu[i]

解説大きい硬貨から順に、金額を硬貨の額で割った商だけ使います。
残額は割り算の余りで更新すると、各硬貨の枚数が求まります。

プログラミング · 繰り返し · QUESTION 034

配列Binaryは与えられた2進数の各桁の値を要素として持つ。
例えば、1101(2)に対して配列Binaryは[1, 1, 0, 1]である。
配列Binaryに入力された2進数を10進数に変換するプログラムとなるように、空欄に入る最も適切なものを選べ。
配列の添字は左端を0とし、要素数(配列)は配列の要素数を返すものとする。

(1)Binary = 【外部からの入力】
(2)decimal = 0
(3)i を 0 から 要素数(Binary) - 1 まで 1 ずつ増やしながら繰り返す:
(4)⎿ decimal = ( ア )
(5)表示する("2進数", Binary, "を10進数にすると", decimal)

1.decimal + Binary[i] * 2
2.decimal + Binary[i] * 2 ** i
3.decimal + Binary[i] * 2 **(要素数(Binary) - i)
4.decimal + Binary[i] * 2 **(要素数(Binary) - i - 1)
答えと解説を見る

答え4.decimal + Binary[i] * 2 **(要素数(Binary) - i - 1)

解説2進数の各桁には、右端から1、2、4、8という重みがあります。
各ビットと対応する2のべきを掛けて合計します。

プログラミング · 繰り返し · QUESTION 035

配列Binaryは与えられた2進数の各桁の値を要素として持つ。
例えば、1101(2)に対して配列Binaryは[1, 1, 0, 1]である。
配列Binaryに入力された2進数を10進数に変換するプログラムとなるように、空欄に入る最も適切なものを選べ。
配列の添字は左端を0とし、要素数(配列)は配列の要素数を返すものとする。

(1)Binary = 【外部からの入力】
(2)decimal = 0
(3)i を 0 から 要素数(Binary) - 1 まで 1 ずつ増やしながら繰り返す:
(4)⎿ decimal = ( ア )
(5)表示する("2進数", Binary, "を10進数にすると", decimal)

1.decimal + Binary[i]
2.decimal * 2 + Binary[i]
3.decimal + Binary[i] * 2
4.decimal * 2 + Binary[i] * 2
答えと解説を見る

答え2.decimal * 2 + Binary[i]

解説2進数を左から読むときは、これまでの値を2倍してから次のビットを加えます。
これは桁の重みを毎回一つ左へ移す計算です。

プログラミング · 繰り返し · QUESTION 036

配列Binaryは与えられた2進数の各桁の値を要素として持つ。
例えば、1101(2)に対して配列Binaryは[1, 1, 0, 1]である。
配列Binaryに入力された2進数を10進数に変換するプログラムとなるように、空欄に入る最も適切なものを選べ。
配列の添字は左端を0とし、要素数(配列)は配列の要素数を返すものとする。

(1)Binary = 【外部からの入力】
(2)decimal = 0 , k = 0
(3)i を要素数(Binary) - 1 から 0 まで 1 ずつ減らしながら繰り返す:
(4)| decimal = ( ア )
(5)⎿ k = k + 1
(6)表示する("2進数", Binary, "を10進数にすると", decimal)

1.decimal + Binary[i] * 2
2.decimal + Binary[i] * 2 ** i
3.decimal + Binary[i] * 2 ** k
4.decimal + Binary[i] * 2 ** (i + k)
答えと解説を見る

答え3.decimal + Binary[i] * 2 ** k

解説桁の重みを表す指数kを管理し、各ビットに2のk乗を掛けて足します。
kを桁ごとに変えることで、位置に応じた値を加算できます。

プログラミング · 繰り返し · QUESTION 037

入力された正の整数(10進数)を2進数に変換するプログラムとなるように、空欄に入る最も適切なものを選べ。
配列の添字は左端を0とし、要素追加(配列, 値)は配列の末尾に新しい要素を追加する関数であり、逆順(配列)は配列の要素の並び順を逆にする関数である。
また、a % bはaをbで割ったときのあまりを返し、a ÷ bはaをbで割ったときの商を返す。

(1)decimal = 【外部からの入力】
(2)Binary = [] #空のリスト
(3)decimal > 0 の間繰り返す:
(4)| 追加する(Binary,( ア ) )
(5)⎿ decimal = ( イ )
(6)逆順(Binary)
(7)表示する("2進数にすると", Binary)

( ア )( イ )
1.ア decimal % 2 イ decimal % 2
2.ア decimal % 2 イ decimal ÷ 2
3.ア decimal ÷ 2 イ decimal % 2
4.ア decimal ÷ 2 イ decimal ÷ 2
答えと解説を見る

答え2.ア decimal % 2 イ decimal ÷ 2

解説2で割った余りdecimal % 2をBinaryへ追加し、decimalを商decimal ÷ 2へ更新するため、空欄は選択肢2です。
余りは下位桁から順に得られるので、最後に配列を逆順にすると正しい2進表記になります。

プログラミング · 繰り返し · QUESTION 038

入力された1桁の16進数(0~9,A~F)を10進数に変換するプログラムとなるように、空欄に入る最も適切なものを選べ。

(1)hex = 【外部からの入力】
(2)Henkan = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, "A", "B", "C", "D", "E", "F"]
(3)j = 0
(4)( ア )の間繰り返す:
(5)⎿ j = j + 1
(6)表示する("16進数", hex, "を10進数に変換すると", j)

( ア )
1.Henkan[j] == hex
2.Henkan[j] != hex
3.Henkan[j] > hex
4.Henkan[j] < hex
答えと解説を見る

答え2.Henkan[j] != hex

解説16進数の変換表を先頭から調べ、入力と一致した位置を探します。
Aなら10、Bなら11のように、位置が10進値になります。

プログラミング · 繰り返し · QUESTION 039

配列Hexは与えられた16進数の各桁の値を要素として持つ。
例えば、3AB(16)に対して配列Hexは[3, A, B]である。
配列Hexに入力された16進数を10進数に変換するプログラムとなるように、空欄に入る最も適切なものを選べ。
配列の添字は左端を0とし、要素数(配列)は配列の要素数を返すものとする。

(1)Hex = 【外部からの入力】
(2)Henkan = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, "A", "B", "C", "D", "E", "F"]
(3)decimal = 0
(4)i を 0 から 要素数(Hex) - 1 まで 1 ずつ増やしながら繰り返す:
(5)| j = 0
(6)| Henkan[j] != Hex[i]の間繰り返す:
(7)| ⎿ j = j + 1
(8)⎿ decimal = decimal + ( ア )
(9)表示する("16進数", Hex, "を10進数に変換すると", decimal)

( ア )
1.j * (16 ** i)
2.j * (16 ** (i - 1))
3.j * (16 ** (要素数(Hex) - i))
4.j * (16 ** (要素数(Hex) - i - 1))
答えと解説を見る

答え4.j * (16 ** (要素数(Hex) - i - 1))

解説16進数では各桁に16のべきを掛けます。
A〜Fを10〜15へ置き換えてから、桁の位置に応じた重みを足します。

プログラミング · 繰り返し · QUESTION 040

入力された正の整数(10進数)を16進数に変換するプログラムとなるように、空欄に入る最も適切なものを選べ。
配列の添字は左端を0とし、要素追加(配列, 値)は配列の末尾に新しい要素を追加する関数であり、逆順(配列)は配列の要素の並び順を逆にする関数である。
また、a % bはaをbで割ったときのあまりを返し、a ÷ bはaをbで割ったときの商を返す。

(1)decimal = 【外部からの入力】
(2)Hex = [] #空のリスト
(3)Henkan = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, "A", "B", "C", "D", "E", "F"]
(4)decimal > 0 の間繰り返す:
(5)| 追加する(Hex,( ア ) )
(6)⎿ decimal = ( イ )
(7)逆順(Hex)
(8)表示する("16進数にすると", Hex)

( ア )( イ )
1.decimal % 16
2.decimal ÷ 16
3.Henkan(decimal ÷ 16)
4.Henkan(decimal % 16)
答えと解説を見る

答えア 4.Henkan(decimal % 16) イ 2.decimal ÷ 16

解説16で割った余りをHenkanの添字にすると0~Fへ変換できるため、アはHenkan(decimal % 16)、イはdecimal ÷ 16です。
余りは下位桁から得られるので、Hexを逆順にしてから16進数の変換結果として表示します。

分野