問 4(提出プログラム名:ex1104.c)
このプログラム(ex1104.c)をダウンロードし,その中の関数 to_sum を完成させなさい.
関数 to_sum は,引数で与えられたポインタ p を使い,
そのポインタ p が参照している int 型変数の値(便宜上,これを x とする)を
「1 から x までの合計値」に書き換えるものとする.
ただし,合計を求めるにあたって等差数列の和の公式を使ってはいけません.
この問題では関数 main の内容は一切書き換えないこと.
【注意】
関数 to_sum は戻り値を持たないので戻り値型は void と宣言してある.
これを変更してはいけませんし,戻り値を持たせても(return を書いても)いけません.
【注意すべき点】
単純に 1 から x まで(実際は x ではない)の合計を求めるだけのプログラムではありますが,
合計を求めるにあたってその合計値をためていく変数(よく sum という名前を使います)を
0 で初期化するのを忘れてしまう場合があります.
変数を宣言した時点では,その変数の値が何になっているかは決まっていません.
Windows 環境の場合,これが 0 になっていることが多いようで,その結果このミスに気づきにくいようです.
不安な人は gcc -Wall ex1104.c というように -Wall オプションを付けてコンパイルしてみてください.上のような初期化忘れに対して警告(warning)を出してくれます.
- 【プログラムの実行結果】(その1)※赤字は実行時にキーボードから入力する内容
正の整数を 1 つ入力してください:10 to_sum 実行前の x = 10⏎ to_sum 実行後の x = 55⏎
- 【プログラムの実行結果】(その2)※赤字は実行時にキーボードから入力する内容
正の整数を 1 つ入力してください:1 to_sum 実行前の x = 1⏎ to_sum 実行後の x = 1⏎
【過去にあったミス(実際に減点となり,やり直しを命じられた例)】
■ 実行の画面出力が上の例と違う(きちんと確認していない).
(例1)to_sum の実行前後で x の値が変わっていない.
(例2)実行例1または実行例2だけ答えが違っている.
■ main 関数を書き換えてしまっている.
■ インデントに不備がある(VSCode 上でインデントを自動で揃える作業をやっていない)
ミスが無いことを確認したら次の問題へ → [ 問5 (ex1105.c) ]