問 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 = 1 ~ n (1 以上 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 上でインデントを自動で揃える作業をやっていない).
← [ 問 7 (ex1007.h) ]
ミスが無いことを確認したら次の問題へ → [ 問 9 (ex1009.c) ]