問 5(提出プログラム名:ex0105a.c)
2 つの整数 x, y を読み込み,「x の y %」を小数点以下第 2 位まで出力するプログラムを作成しなさい.ここでは 0 < y < 100 であると仮定してプログラムを作ってよい.(変数 x, y は int 型として用意しなさい.double 型で用意してはいけません)
printf による出力では小数点以下の桁数を指定するだけでよく,値を四捨五入する必要はない.
提出するソースファイル(ソースプログラム)のファイル名は ex0105a.c としなさい.
【ヒント】
(1)素直に計算するなら x*y/100 となりますが,そのままでは x*y の値と 100 の両方が int 型なので割り算では小数点以下が勝手に切り捨てられてしまいます.よって,x*y の方には x だけでよいので double 型へのキャストが必要です(x の値が double 型扱いになれば,それ以降の計算はすべて double 型扱いになるため).
(2)printf で % を表示させたいときには %% と 2 個連続して書く必要があります.
(3)printf では “x の y%% は…” と書くのは誤りであり, “%d の %d%% は…” と書かなければなりません.
- 【プログラムの実行結果】(その1)※赤字は実行時にキーボードから入力する内容
出力では「25 の 13% は…」という具合いに入力値が使われている点に注意せよ.「x の y% は…」のようにアルファベットのままで出力させないこと.
x を入力してください:25 y を入力してください:13 25 の 13% は 3.25 です⏎
- 【プログラムの実行結果】(その2)※赤字は実行時にキーボードから入力する内容
x を入力してください:123 y を入力してください:39 123 の 39% は 47.97 です⏎
【過去にあったミス(実際に減点となり,やり直しを命じられた例)】
■ 実行の画面出力が上の例と違う(きちんと確認していない).
(例1)「x の y% は」という具合いにそのまま x, y というアルファベットを表示させている.
この問題では,上の実行例のように(「25 の 13% は」や「123 の 39% は」のように),
実際に入力された値を出力に使わなければならない.
(例2)double 型へのキャストを適切に使えておらず,上の結果が 3.00 や 47.00になっている.
(例3)小数点以下の桁数指定を忘れていて小数点以下が 2 桁になっていない.
■ 出力の末尾に改行(\n)を書き忘れている.
■ インデントに不備がある(VSCode 上でインデントを自動で揃える作業をやっていない).
← [ 問 4 (ex0104a.c) ]
ミスが無いことを確認したら次の問題へ → [ 問6 (ex0106a.c) ]