課題 [5] for 文(2/9)

問 2(提出プログラム名:ex0502.c)

整数 n を読み込み, n のすべての約数を小さい順(昇順)に出力し,さらにそれらの合計も出力するプログラムを作りなさい.この問題では 1 と n も約数として出力・合計しているところに注意すること.
なお,プログラムでは必ず for 文を使うこと. n は 1 以上であると仮定してプログラムを作ってよい.
提出するソースファイル(ソースプログラム)のファイル名は ex0502.c としなさい.

【注意すべき点】
サンプルプログラムをコピーして編集するのは全く問題ないのですが,その際に誤って
   for (k = 1; k >= 1; k++)
と書いてしまう人がいます.
これだと k = 1 を初期値として,「k が 1 以上である限り繰り返す」のですが,一方で k++ として「k は増え続ける」ことになってしまって(条件が常に成立する)無限ループになります.
数秒ほど待っても実行が終わらないようであれば無限ループを疑ってください.

  • 【プログラムの実行結果】(その1)赤字は実行時にキーボードから入力する内容
    ※約数が小さい順に出力されているか,数字の左には空白が入っているか(隣とくっついていないか),それぞれ注意せよ.
n を入力してください:10
10 の約数 = 1 2 5 10
約数の合計 = 18
 ※約数の合計を出力した後に改行(\n)を入れ忘れないよう注意せよ.
  • 【プログラムの実行結果】(その2)赤字は実行時にキーボードから入力する内容
n を入力してください:11
11 の約数 = 1 11
約数の合計 = 12
  • 【プログラムの実行結果】(その3)赤字は実行時にキーボードから入力する内容
n を入力してください:1
1 の約数 = 1
約数の合計 = 1

【過去にあったミス(実際に減点となり,やり直しを命じられた例)】
実行の画面出力が上の例と違うきちんと確認していない).
 (例1)約数が小さい順(昇順)に出力されてない.
 (例2)「n の約数」といったかたちでアルファベット表記に固定されてしまっている.
■ 合計を求めるための変数(仮に sum とする)について,
 繰り返しに先立って 0 に初期化すること(sum = 0;)を忘れている.
インデントに不備がある(VSCode 上でインデントを自動で揃える作業をやっていない).


ミスが無いことを確認したら次の問題へ → [ 問3 (ex0503.c) ]