平成28年度 III-2

科目: 専門科目 / 分野: 情報工学部門 / 年度: 平成28年度

III-2 問題画像

出典:公益社団法人 日本技術士会「技術士第一次試験 過去問題」

C言語で1から20までの数字を表示し、3で割り切れるときはFizz、5で割り切れるときはBuzz、両方で割り切れるときはFizzBuzzと表示するプログラムの空欄に、(ア)(イ)(ウ)を入れたときの動作に関する記述のうち最も適切なものを選ぶ問題。

解説

この問題で問われていること

同じ動作を、条件演算子、配列テーブル、if文で実現した3つのコードが、それぞれ正しいかを確認する問題。

解き方

① FizzBuzzは「15で割り切れる場合」を先に扱うか、Fizz と Buzz を連結して出せば正しく動く
② (ア)は Fizz と Buzz を連結するので15の倍数で FizzBuzz、(イ)は i%15 の表で添字0が FizzBuzz、(ウ)は両方割り切れる場合を最初に判定。3つとも正しい
③ ①

正解が正しい理由

(ア)は、i%3が0でないときは空文字列、0のときは"Fizz"を、i%5が0でないときは空文字列、0のときは"Buzz"を、続けて出力する。3と5の両方で割り切れるiでは、"FizzBuzz"となる。正しい。(イ)は、15要素の配列を、i%15で参照する。添字0が"FizzBuzz"、3、6、9、12が"Fizz"、5、10が"Buzz"、その他が空文字列で、正しい。(ウ)は、if文で、3と5の両方で割り切れる場合を最初に判定し、次に、3、次に5、それ以外を空として出力しており、正しい。したがって、3つとも正しく動作するので、①が最も適切である。

各選択肢について

覚えるべきポイント

FizzBuzzは、3と5の両方で割り切れる場合を、最初に判定するか、文字列を連結して出力する。i%15をキーとしたテーブル参照でも実現できる。

キーワード: FizzBuzz、C言語、剰余、条件演算子、配列、プログラムの動作、情報工学部門