練習 4(提出プログラム名:p0404.c)
サンプルプログラム 4 (sample4.c) を p0404.c という別の名前のファイルにコピーしなさい.そして,p0404.c を編集して以下の例のように実行できるプログラムを作りなさい.
このプログラムでは 1 つの整数 n を読み込み,次のルールに従って n 個だけ記号を出力し,最後に改行した後で「以上です」と出力して終了する.なお,n は 0 以上であると仮定してプログラムを作ってよい.
【出力ルール】
① 通常は半角のマイナス記号(-)を出力するが,
5 回に 1 回だけはマイナス記号の代わりに半角のプラス記号(+)を出力する.
(つまり,5 個目,10 個目,15 個目,…. は – ではなく + を出力する)
② 上の記号出力とは別に,記号を 10 個出力するたびに改行も行う.
③ n 個の記号を出力し終わったら,いったん改行し,改めて最後に「以上です」と出力する.
【注意点】
この問題では if 文は 2 回までしか使ってはいけません.
【ヒント】
この問題では while 文を使って以下の処理を n 回繰り返すという構造になります.
つまり,繰り返しの対象となるのは(使用する変数を k として)
if ( k は 5 の倍数? )
{
①プラス記号を出力(改行は出力しない);
}
else
{
①マイナス記号を出力(改行は出力しない);
}
if ( k は 10 の倍数? )
{
②改行のみを出力;
}
k++;
となります.(k++; を忘れると無限ループ!)
この問題の場合,①と②を分けて考えると簡単になります.
なお,while 文での繰り返しが終わった後に,ひとまず改行して,その後に「以上です」と出力することも忘れないこと.
- 【プログラムの実行例】(その1)※赤字は実行時にキーボードから入力する内容
※「以上です」の後の改行(\n)を忘れないこと!
整数を 1 つ入力してください:6 ----+-⏎ 以上です⏎
- 【プログラムの実行例】(その2)※赤字は実行時にキーボードから入力する内容
※記号の個数(例えば 1 行目は「- を 4 個,+ を 1 個,- を 4 個,+ を 1 個,改行」の順となっていること)をきちんと確認せよ.
整数を 1 つ入力してください:27 ----+----+ ----+----+ ----+--⏎ 以上です⏎
- 【プログラムの実行例】(その3)※赤字は実行時にキーボードから入力する内容
整数を 1 つ入力してください:0 ⏎ 以上です⏎
【過去にあったミス(減点となり,やり直しを命じられる)】
■ 上の3種類の実行例と出力が違っている(きちんと確認していない).
(例1)– の個数が違っている.
よくあるミスとして,実行例 1 で ----+- となるべきところが -----+- となっている.
(+ の左に - が 1 個多い)
(例2)上のヒントを見落としていて,必要以上に複雑なプログラムになっている.
例えば,10 で割り切れる時だけわざわざ "+\n" と出力させるようにしている.
ルールの①と②は別々に処理する方が話はずっと簡単である.
(例3)「以上です」という出力がその前の記号につながってしまっている.
例えば, ----+-以上です になってしまっている.
■ インデントに不備がある(VSCode 上でインデントを自動で揃える作業をやっていない).
← [ 練習3 (p0403.c) ]
ミスが無いことを確認したら次の問題へ → [ 練習5 (p0405.c) ]