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

問 8(提出プログラム名:ex1008.c)

まず,このプログラム(ex1008.c)をダウンロードしなさい.
ex1008.c では,最初に整数 n を読み込み,続いて n 個の英単語を読み込んで,最後にそれらの総文字数を出力させようとしている.
なお,文字数のカウントには問 6 で作った get_length を呼出して使うこととする.
(それゆえ,#include "ex1006.h" と書いてある)

ex1008.c の中の main 関数を編集して以下の動作をするように仕上げなさい
書き換えるのは ex1008.c のみであり,ex1006.h はインクルードして使うだけなので間違えないこと)

【main 関数の動作内容】
 (1) 整数 n を読み込む.
 (2) 文字数カウントの初期値として sum = 0 とする.
 (3) i = 1n1 以上 n 以下)について,次の処理 (3a),(3b),(3c) を繰り返す:
   (3a) 「◯番目の単語:」と表示する.◯には i に対応する整数が入る.
   (3b) 文字列(単語)を 1 つ読み込む.
     ※文字列の場合,scanf では & を付けないので注意せよ(講義資料を参照せよ).
   (3c) 読み込んだ文字列の長さを get_length で調べ,sum に足す.
 (4) sum を総文字数として表示する.

この問題では,最初に入力される整数 n は 0 以上であり,その後に入力される文字列の文字数はいずれも SIZE 未満であると仮定してプログラムを作ってよい(SIZE はマクロで定義されている).

【注意】
この問題ではマクロの定義部分以外に 100 やそれに関係する数字を直接書いてはいけません.
また,問 6 で作った関数 get_length と同じものをわざわざこちらのプログラムにコピーしないこと
(既に ex1006.h の中に書いてあり,これを #include "ex1006.h" として読み込んでいるのですぐに利用可能となっている)

  • 【プログラムの実行結果】(その1)赤字は実行時にキーボードから入力する内容
単語数を入力してください:5
1 番目の単語:This 
2 番目の単語:is
3 番目の単語:a
4 番目の単語:sample
5 番目の単語:input
総文字数は 18 です
  • 【プログラムの実行結果】(その2)赤字は実行時にキーボードから入力する内容
単語数を入力してください:1
1 番目の単語:This 
総文字数は 4 です
  • 【プログラムの実行結果】(その3)赤字は実行時にキーボードから入力する内容
単語数を入力してください:0
総文字数は 0 です

【過去にあったミス(実際に減点となり,やり直しを命じられた例)】
実行の画面出力が上の例と違うきちんと確認していない).
 (例)実行例3で単語数を 0 と入力したのに,1 番目の単語を入力するように求めている.
■ 問 6 で作った get_length をわざわざこちらのプログラム内にコピーしている.
インデントに不備がある(VSCode 上でインデントを自動で揃える作業をやっていない).


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