問 3(提出プログラム名:ex1003a.c)
このプログラム(ex1003a.c)をダウンロードし,その中の関数 to_sum を完成させなさい.
関数 to_sum は,引数で与えられたポインタ p を使い,
そのポインタ p が参照している int 型変数の値(便宜上,これを x とする)を
「1 から x までの合計値」に書き換えるものとする.
ただし,合計を求めるにあたって等差数列の和の公式を使ってはいけません.
この問題では関数 main の内容は一切書き換えないこと.
【注意】
関数 to_sum は戻り値を持たないので戻り値型は void と宣言してある.
これを変更してはいけませんし,戻り値を持たせても(return を書いても)いけません.
【注意すべき点】
単純に 1 から x まで(実際は x ではない)の合計を求めるだけのプログラムではありますが,
合計を求めるにあたってその合計値をためていく変数(よく sum という名前を使います)を
0 で初期化するのを忘れてしまう場合があります.
変数を宣言した時点では,その変数の値が何になっているかは決まっていません.
Windows 環境の gcc の場合,これが 0 になっていることが多いようで,その結果このミスに気づきにくいです.
不安な人は gcc -Wall ex1003a.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 上でインデントを自動で揃える作業をやっていない)
以上の 3 問は明日(6/28)の 16時までに提出を済ませてください.
(ex1001a.c ~ ex1003a.c を Moodle から提出してください.)
くれぐれも各問題で記載されている注意事項や「過去にあったミス」を見落とさないようにしてください.なお,コンパイルエラーや無限ループが含まれる場合は総合評価を 0 点とします.
提出後に間違いに気付いた場合,〆切前であれば差し替え(上書き)は可能です.
← [ 問 1 (ex1001a.c) ]
← [ 問 2 (ex1002a.c) ]
次のページ以降に問 4 ~問 9 があります.
問 4 以降を明日の16時までに早期提出した場合は加点の対象とします
(一部のみを早期提出してもよいです).
※なお,明らかに間違っている(まともに動かない)プログラムを早期提出するのは絶対にやめてください.不正に加点を得ようとした行為と見なして減点とします.