問 2(提出プログラム名:ex0402a.c)
2 つの実数 a と r,ならびに 1 つの整数 n を読み込み, 初項 a,公比 r の等比数列を第 n 項まで出力するプログラムを作りなさい.ただし,各項の値は小数点以下第 5 位までを出力するものとする.
なお, プログラムでは必ず for 文を使うこと.ただし,for 文は 1 回しか使ってはいません.
ここでは n は 1 以上であると仮定してプログラムを作ってよい.
提出するソースファイル(ソースプログラム)のファイル名は ex0402a.c としなさい.
【ヒント】
基本構造は単純であり,「1 つ前の項の値に公比 r をかける」という処理を繰り返せばよいです.
なお,初項と公比は最初から double 型であり,小数点以下を切り捨てるような処理は求められていないためキャストは不要です.
- 【プログラムの実行結果】(その1)※赤字は実行時にキーボードから入力する内容
※小数点以下の桁数が 5 桁になっているか確認せよ(デフォルトのままだと 6 桁になってしまう)
初項:10 公比:0.9 項数:5 第 1 項 = 10.00000⏎ 第 2 項 = 9.00000⏎ 第 3 項 = 8.10000⏎ 第 4 項 = 7.29000⏎ 第 5 項 = 6.56100⏎
- 【プログラムの実行結果】(その2)※赤字は実行時にキーボードから入力する内容
初項:3.14 公比:0.99 項数:1 第 1 項 = 3.14000⏎
- 【プログラムの実行結果】(その3)※赤字は実行時にキーボードから入力する内容
初項:1.23 公比:-0.6 項数:4 第 1 項 = 1.23000⏎ 第 2 項 = -0.73800⏎ 第 3 項 = 0.44280⏎ 第 4 項 = -0.26568⏎
【過去にあったミス(実際に減点となり,やり直しを命じられた例)】
■ a と r は double 型,n は int 型であるが,scanf でそれらを適切に指定(%lf と %d の使い分け)できておらず,値を正しく読み込めていない.
■ 実行の画面出力が上の例と違う(きちんと確認していない).
(例1)出力する値の小数点以下の桁数が違う.
(例2)「第 k 項 =」といったかたちでアルファベット表記に固定されてしまっている.
■ 上のヒントを見落としていて,無駄に複雑なプログラムになっている.
例えば,各項を求めるために for 文を二重ループで作っていたり,わざわざ double 型へのキャストを行ったりしている.
■ インデントに不備がある(VSCode 上でインデントを自動で揃える作業をやっていない).
← [ 問 1 (ex0401a.c) ]
ミスが無いことを確認したら次の問題へ → [ 問3 (ex0403a.c) ]