38PM59第38回 臨床工学技士国家試験 過去問

情報通信・制御工学情報表現・論理・ソフトウェアUnicode・論理回路・OS/DBMS・セキュリティ

図のフローチャートでaに20を入力したとき、出力Sはどれか。 ただし、(a mod 2)はaを2で割った余りを表す。

38PM59の問題画像
解答・解説を見る

正解: 3

正答

3

この問題のポイント

この問題では、フローチャートを上から順に追い、変数aSがどのように変化するかを読み取ります。

図では、aに20を入力した後、

  • S ← 0
  • a ≧ 1 なら処理を続ける
  • aが偶数なら S ← S + a
  • その後、a ← a - 1
  • aが1未満になったらSを出力

という流れです。

つまり、a = 20から1までのうち、偶数だけをSに加える処理です。

解説

まず、aに20を入力し、Sを0にします。

  • a = 20
  • S = 0

次に、フローチャートではaが1以上である限り処理を続けます。

判定式

  • (a mod 2) = 0

は、aを2で割った余りが0かどうかを見ています。

余りが0なら、aは偶数です。したがって、そのときだけ

  • S ← S + a

を実行します。

その後、偶数でも奇数でも

  • a ← a - 1

を実行して、再びa ≧ 1の判定に戻ります。

aは20から1まで1ずつ減っていくため、Sに加えられるのは次の偶数です。

  • 20
  • 18
  • 16
  • 14
  • 12
  • 10
  • 8
  • 6
  • 4
  • 2

したがって、

  • S = 20 + 18 + 16 + 14 + 12 + 10 + 8 + 6 + 4 + 2
  • S = 2 × (10 + 9 + 8 + 7 + 6 + 5 + 4 + 3 + 2 + 1)
  • S = 2 × 55
  • S = 110

よって、出力Sは110です。

図で見るポイント
「(a mod 2) = 0」の判定がyesのときだけSにaを加えます。つまり、偶数だけを合計する処理です。

ひっかけポイント
aが奇数のときはSに加えませんが、a ← a - 1は実行されます。奇数を飛ばしても、aは必ず1ずつ減っていきます。

選択肢の確認

1.誤り。
90は、20から2までの偶数の一部を足し忘れた場合などに近い値です。20、18、16、14、12、10、8、6、4、2をすべて加えます。

2.誤り。
100は、偶数の合計を途中で誤って計算した場合に出やすい値です。正しくは110です。

3.正しい。
20から2までの偶数をすべて加えると、20 + 18 + 16 + 14 + 12 + 10 + 8 + 6 + 4 + 2 = 110となります。

4.誤り。
210は、1から20までのすべての整数を合計した値です。このフローチャートでは偶数だけを加えるため、210にはなりません。

5.誤り。
220は、偶数の合計を2倍にしたような値です。Sに加える処理は各偶数につき1回だけです。

覚えるポイント

  • modは割り算の余りを表します。
  • (a mod 2) = 0 なら、aは偶数です。
  • このフローチャートは、20から1までの偶数だけを合計します。
  • 20 + 18 + 16 + 14 + 12 + 10 + 8 + 6 + 4 + 2 = 110です。
  • フローチャート問題では、条件分岐と繰り返しの戻り先を丁寧に追います。

関連問題

38PM5838PM60
学習アプリでこの問題を解く(記録・メモ・カード化)