練習 [3] プログラムの流れの分岐(4/5)

練習 4(提出プログラム名:p0304.c)

サンプルプログラム 4 (sample4.c)p0304.c という別の名前のファイルにコピーしなさい.そして,p0304.c を編集して以下の例のように実行できるプログラムを作りなさい.
なお,このプログラムでは if 文は 2 回までしか使ってはいけません.

このプログラムでは 3 つのレポートの得点(いずれも整数)を読み込み(それらを x, y, z として),
 (1) 3 つとも 60 以上の時:「完璧な合格です」と表示する.
 (2) そうでない時:
  (2-1) 「x >= 60」で,なおかつ「y >= 60 または z >= 60」 の時:
     「とりあえず合格です」と表示する.
     (※ x が 60 以上は必須であり,y と z についてはどちらか一方が 60 以上ならば合格という意味である)
  (2-2) 上のいずれでもない時:
     「不合格です」と表示する.

なお,x, y, z はいずれも 0 以上 100 以下の整数であると仮定してプログラムを作ってよい.

【ヒント】
if 文を使った判定の構造は練習3 (p0303.c) と同じなのでそちらを参考にしてください.

条件 (2-1) は if ( x >= 60 && ( y >= 60 || z >= 60 ) ) という具合いにカッコを付ける必要がある点に注意してください.
カッコを付けない場合は && の方が優先されるので
  if ( ( x >= 60 && y >= 60 ) || z >= 60 )
と解釈されてしまいます.つまり,
「x >= 60 で,なおかつ y >= 60」または「z >= 60」のどちらかが成立すればよいと誤解されます.

  • 【プログラムの実行例】(その1)赤字は実行時にキーボードから入力する内容
3 つのレポートの点数を入力してください:60 70 80
完璧な合格です
  • 【プログラムの実行例】(その2)赤字は実行時にキーボードから入力する内容
3 つのレポートの点数を入力してください:80 50 60
とりあえず合格です
  • 【プログラムの実行例】(その3)赤字は実行時にキーボードから入力する内容
3 つのレポートの点数を入力してください:50 100 100
不合格です
  • 【プログラムの実行例】(その4)赤字は実行時にキーボードから入力する内容
3 つのレポートの点数を入力してください:100 50 50
不合格です

【過去にあったミス(実際に減点となり,やり直しを命じられた例)】
■ 上の 4 種類の実行例をきちんと試していない
 条件の組合せはプログラミングにおいて最も間違いが多く,初心者がミスしやすい部分です.
 間違いは誰でもあるのですが,それゆえに動作確認は丁寧に行ってください.
インデントに不備がある(VSCode 上でインデントを自動で揃える作業をやっていない).
 この問題のように複数の条件が登場する場合は,適切にインデントを付けて整理することが極めて重要になってきます.


ミスが無いことを確認したら次の問題へ → [ 練習5 (p0305.c) ]