課題 [2] 演算とデータ型(8/9)

問 8(提出プログラム名:ex0208.c)

あるお店では「5%OFFセール」として,商品の金額(税込み)をすべて 95% に相当する金額(小数点以下切り捨て)に換算して販売している.
商品の金額(整数,単位は円)を読み込み,その 95% に相当する販売価格(ただし,小数点以下は切り捨て)を出力するプログラムを作成しなさい.なお,このお店では 100 円以上の商品しか扱っていないものと仮定してよい(例えば,1 円の商品の 5%OFF を考えると困ることになるため).
提出するソースファイル(ソースプログラム)のファイル名は ex0208.c としなさい.

【ヒント】
この問題の場合は問 7 とは逆で,int 型へのキャストを使うのは間違いなので注意してください.
最初に入力する値が整数(int型)であり,出力したい値も整数(int 型)なので,講義で説明しているようにすべて int 型だけで完結するよう計算を工夫するのがベストです.つまり,「95 をかけて 100 で割る」という具合いに工夫するとよいでしょう.
仮に 0.95 という実数をそのままかけると double 型になってしまうため数値に誤差が含まれてしまい,最後の小数点以下切り捨てで間違った答えになる危険性があります.

  • 【プログラムの実行結果】(その1)赤字は実行時にキーボードから入力する内容
    ※「円」を書き忘れるというミスがよくあるので注意せよ
    あわせて,最後の改行(\n)を書き忘れるというミスも多いので注意せよ
商品の金額を入力してください:10000
割引後の販売額は 9500 円です
  • 【プログラムの実行結果】(その2)赤字は実行時にキーボードから入力する内容
商品の金額を入力してください:5800
割引後の販売額は 5510 円です

【過去にあったミス(実際に減点となり,やり直しを命じられた例)】
実行の画面出力が上の例と違うきちんと確認していない).
 上のヒントを見落としていて,0.95 をかけた後に int 型へのキャストを使ってしまっている.
 実際,この間違いを含んだプログラムを Windows 環境で動かすと,上の実行例「その1」,「その2」ではそれぞれ答えが 1 円だけ少なく表示される.
出力の末尾に改行(\n)を書き忘れている
インデントに不備がある(VSCode 上でインデントを自動で揃える作業をやっていない).


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