練習 [4] while 文(教科書では主に 4 章が対応)(3/5)

練習 3(提出プログラム名:p0403.c)

サンプルプログラム 3 (sample3.c)p0403.c という別の名前のファイルにコピーしなさい.そして,p0403.c を編集して以下の例のように実行できるプログラムを作りなさい.
このプログラムでは 1 つの整数 x を読み込み,
1 以上 x 以下の偶数のみの合計」と「1 以上 x 以下の奇数のみの合計」を
それぞれ表示させている.なお,x は 1 以上の整数であると仮定してプログラムを作ってよい.
【注意点】
「等差数列の和」の公式を使ってはいけません
if 文は 1 回しか使ってはいけません

【ヒント】
この問題では 2 種類の合計値を求めることになりますので,
偶数を合計するための変数(例えば sum0)と奇数を合計するための変数(例えば sum1)を
別々に用意してあげるとよいです.ただし,sum0sum1 の初期化(最初に 0 を代入)を忘れないこと.
なお,偶数かどうかの判定は 2 で割った余りが 0 かどうかで分かりますし,
「偶数でない」⇔「奇数である」なので,以下の構造にすればよいです.
※最後の k++; が無いと無限ループになるので注意.

(1) sum0sum1 の値を 0 にする.
(2) k の値を 1 にする.
(3) kx である限り以下の (3-1) と (3-2) を繰り返す.
  (3-1) k が偶数ならば ksum0 に加える.
    さもなくば ksum1 に加える.
  (3-2) k++; とする(k1 だけ増やす).

  • 【プログラムの実行例】(その1)赤字は実行時にキーボードから入力する内容
    表示される合計は「偶数,奇数の順」になっている点に(逆にならないよう)注意せよ.
整数を 1 つ入力してください:10
1 から 10 までの偶数の合計は 30 です
1 から 10 までの奇数の合計は 25 です
  • 【プログラムの実行例】(その2)赤字は実行時にキーボードから入力する内容
    上とは異なり「1 から 123 までの…」と表示されている点に注意せよ.
整数を 1 つ入力してください:123
1 から 123 までの偶数の合計は 3782 です
1 から 123 までの奇数の合計は 3844 です
  • 【プログラムの実行例】(その3)赤字は実行時にキーボードから入力する内容
整数を 1 つ入力してください:1024
1 から 1024 までの偶数の合計は 262656 です
1 から 1024 までの奇数の合計は 262144 です

【過去にあったミス(減点となり,やり直しを命じられる)】
■ while での繰り返しに入る前に行うべき sum0sum1 の初期化(最初に 0 を代入)を忘れている.
 (Windows 環境の gcc だとこれを忘れてもうまく動くことも多いようですが保証はされません.
  少なくとも本講義では初期化を行っていない場合はすべて誤りとみなします.)
■ 上の3種類の実行例と答えが違っている(きちんと確認していない).
  (例1)合計値が違っている.
  (例2)偶数と奇数を逆に出力させている.
  (例3)表示が「1 から x までの◯◯の合計は」というようにアルファベットになっている.
  (例4)「偶数」,「奇数」と表示させていない(単に合計とだけ表示している).
インデントに不備がある(VSCode 上でインデントを自動で揃える作業をやっていない).


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