課題 [10] 文字列(1/9)

問 1(提出プログラム名:ex1001.c)
(これまでの復習:この問題は今回の「文字列」とは関係ありません)

(この問題は前回までに学んできた内容の復習問題であり,今回学んだ「文字列」とは関係ない.
解き方は各自の自由だが,
「配列を使ってはいけない」というルールは必ず守ること.)


まず,このプログラム(ex1001.c)をダウンロードしなさい.
そして,それを編集し,次の動作をするプログラムとして仕上げなさい.

【目的の動作】
整数をいくつか読み込み(個数に上限はない),それらの合計と平均を出力する.
ただし,次のルールを守ること:
 ● 入力の終わりは 0 が入力された時とする.
 ● 最後に入力された 0 は平均の計算には含めない個数として数えない).
 ● 平均値の出力は小数点以下第 2 位までとする.
 ● プログラムの中で配列を使ってはいけない
 ● プログラムの中でdouble 型の変数を使ってはいけない(double 型へのキャストはOK).

なお,この問題では末尾の 0 を除いて,少なくとも 1 つは整数が入力されるものと仮定してプログラムを作ってよい.

【ヒント】
この問題では何個の数字が入力されるか事前には分かりませんし,その上限も決められていません
それゆえ,格納に必要な配列の長さを事前に決めることができません.
しかしながら,合計と平均を求めるだけならば配列を使わなくても実現できます.
いったん while(1){ ... } で無限に繰り返す構造にしておき,その中で scanf で整数を読み込み,それが 0 ならば break; で脱出,そうでなければ個数としてカウントするとともにその整数を合計値に加えていけば良いことになります.

  • 【プログラムの実行結果】(その1)赤字は実行時にキーボードから入力する内容
いくつか整数を入力してください(0 で終了):
1 2 3 4 4 
0
入力された整数の
合計 = 14
平均 = 2.80
  • 【プログラムの実行結果】(その2)赤字は実行時にキーボードから入力する内容
いくつか整数を入力してください(0 で終了):
-2 3 
0
入力された整数の
合計 = 1
平均 = 0.50

【過去にあったミス(実際に減点となり,やり直しを命じられた例)】
実行の画面出力が上の例と違うきちんと確認していない).
 例えば,出力される平均値の小数点以下が常に 0 になっている
     平均値が微妙に違っている,小数点以下の桁数が違っている.
■ 個数や合計値を求めるための変数を 0 で初期化していない.
インデントに不備がある(VSCode 上でインデントを自動で揃える作業をやっていない).


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