練習 3(提出プログラム名:p1103.c)
まず,このプログラム(p1103.c)をダウンロードしなさい.
p1103.c では,整数(ただし,10 以上と仮定してよい)を読み込んで int 型変数 x に格納した後,
関数 round1 を使って「x の値」を「x の 1 の位を四捨五入した値」に書き換え,
最後に書き換え後の x を表示させている.
関数 round1 を完成させなさい.
ただし,round1 の宣言は void round1( int *px ) で始めるものとし,これを変更してはいけません.
あわせて,main 関数の内容を変更してもいけません.
【ヒント】
サンプルプログラム 3 と同様に,main 関数内の変数 x を別の関数(ここでは round1)の中で書き換えるというのがこの問題の趣旨です.ポインタを使うことでこれを実現させます.
四捨五入を行う方法はいくつかありますが,例えば,
x を 10 で割った余り(仮に d とします)を求めれば,それが 1 の位の数字になります.
後は d < 5 なのかどうかで切り捨てと切り上げのいずれになるかが決まります.
- 【プログラムの実行例】(その1)※赤字は実行時にキーボードから入力する内容
整数を 1 つ入力してください:53 1 の位を四捨五入した値 = 50⏎
- 【プログラムの実行例】(その2)※赤字は実行時にキーボードから入力する内容
整数を 1 つ入力してください:16 1 の位を四捨五入した値 = 20⏎
- 【プログラムの実行例】(その3)※赤字は実行時にキーボードから入力する内容
整数を 1 つ入力してください:315 1 の位を四捨五入した値 = 320⏎
【過去にあったミス(減点となり,やり直しを命じられる)】
■ 3 種類の実行例を確認せずに提出してしまっている.
例えば,切り捨てと切り上げの判定を間違っている.
■ round1 の引数や戻り値の型を変更してしまっている.
■ main 関数を書き換えてしまっている.
■ インデントに不備がある(VSCode 上でインデントを自動で揃える作業をやっていない).
← [ 練習2 (p1102.c) ]
ミスが無いことを確認したら次の問題へ → [ 練習4 (p1104.c) ]