本文へスキップ

技術士試験(情報工学部門)・情報技術者試験。ファーストマクロ。


Since 2016.4.19

平成26年度 技術士第一次試験問題【専門科目】

V−3

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

 #include <stdio.h>
 int main() {
  int i;
     
 }

(ア) for (i = 1; i <= 20; i++)
   printf("%d %s%s\n", i, i % 3 ? "" : "Fizz", i % 5 ? "" : Buzz");

(イ) char *fb[15] = {"FizzBuzz", "", "", "Fizz", "",
           "Buzz", "Fizz", "", "", "Fizz",
           "Buzz", "", "Fizz", "", ""};
  for (i = 1; i <=20; i++) printf("%d %s\n", i, fb[i % 15]);

(ウ) for (i = 1; i <= 20; i++) {
   printf("%d ", i);
   if (i % 3 == 0 && i % 5 == 0 ) printf("FizzBuzz\n");
   else if (i % 3 == 0) printf("Fizz\n");
   else if (i % 5 == 0) printf("Buzz\n");
   else printf("\n");
  }

@ (ア)、(イ) のみ正しい。

A (ア)、(ウ) のみ正しい。

B (イ)、(ウ) のみ正しい。

C (ウ) のみ正しい。

D すべて正しい。


類題

H28 V-2


正解

D


解説

(ア) の i % 3 ? "" : "Fizz" は i を3で割った余りが (すなわち≠0) なら"" を出力し (すなわち何も出力しない)、 (すなわち=0) なら"Fizz"を出力するという構文である。

(イ) は予め fb[0] 〜 [14]に Fizz, Bazz, FizzBazzをセットしておき、i を15で割った余りによって、表示させるというアルゴリズム。

(ウ) は、i を3や5で割った余りによって、表示内容を問題の意図を忠実にアルゴリズムにしている。

V−2 目次 V−4