問 7(提出プログラム名:ex0407.c)
1 つの整数 n を読み込み,次のルールで記号を n 個出力するプログラムを作成しなさい.
ただし,プログラムでは必ず while 文を使うこと(do – while 文ではない).
あわせて,if 文は 2 個まで(2個以下)しか使ってはいけません.
n は 2 以上の整数であると仮定してプログラムを作ってよい.
提出するソースファイル(ソースプログラム)のファイル名は ex0407.c としなさい.
【ルール】
● 出力する記号は # か - のいずれかとする(どちらも半角).
● k 番目に出力する記号は, k が 3 の倍数ならば - とし,さもなくば # とする.
● 出力する記号に関係なく,記号を 10 個出力するたびに改行を出力する.
● n 個の記号を出力し終わったら(while の繰り返しの後に),改行だけを出力する.
● 最後に「以上です」と出力する(末尾の改行も忘れないこと).
【ヒント】
ここでは,k = 1 ~ n の範囲で while 文による繰り返しを行うことになります.
その繰り返しの中では毎回必ず – か # のどちらか 1 つを出力することになるので,3 の倍数かどうかをチェックする if-else 文を使って – か # のいずれかを出力します(ただし改行は出力しません).
そして,上の if 文とは別に,改行を出力すべきかどうか(10 の倍数かどうか)だけを判定する if 文も書きます.
つまり,上のように 2 個の if 文を別々に続けて書けばそれだけで十分です.
- 【プログラムの実行結果】(その1)※赤字は実行時にキーボードから入力する内容
次の点に注意せよ:「以上です」の前に改行は入っているか? 後にも改行を忘れていないか?
n を入力してください:12 ##-##-##-#⏎ #-⏎ 以上です⏎
- 【プログラムの実行結果】(その2)※赤字は実行時にキーボードから入力する内容
n を入力してください:30 ##-##-##-#⏎ #-##-##-##⏎ -##-##-##-⏎ ⏎ 以上です⏎
【過去にあったミス(実際に減点となり,やり直しを命じられた例)】
■ 実行の画面出力が上の例と違う(きちんと確認していない).
(例1)# と – が逆に表示されている.
(例2)# と – の出力が上の実行例と微妙に違っている.
(例3)実行例2ではちょうど 10 の倍数で終わっているので,改行が連続して出力されているがこのようになっていない.
■ 上のヒントを見落としていて「3 の倍数であって 10 の倍数でもある時はどうしよう」などと難しく考えすぎてしまい,複雑な条件式の if 文をたくさん書いてしまって混乱(自滅)している.
■ while で繰り返しを始める前に k = 1; という初期化をやる必要があるがこれを忘れている.
■ インデントに不備がある(VSCode 上でインデントを自動で揃える作業をやっていない).
← [ 問 6 (ex0406.c) ]
ミスが無いことを確認したら次の問題へ → [ 問 8 (ex0408.c) ]