技術士試験ナビ

技術士試験対策・テキスト・過去問題解説を発信します。

技術士第一次試験専門科目 平成28年度 Ⅲ-2

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

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

  1. for (i = 1; i <= 20; i++)
        printf("%d %s%s¥n", i, i % 3 ? "" : "Fizz", i % 5  ? "" : "Buzz");
  2. char *fb[15] = {"FizzBuzz", "", "", "Fizz", "", "Buzz", "Fizz", "", "", "Fizz", "Buzz", "Fizz", "", "";
    for (i = 1; i <= 20; i++) printf("%d %s¥n", i, fb[i % 15]);
  3. for (i = 1; i <= 20; i++) {
        printf("%d ", i);
        if (i % 3 == 0 && i % 5 == 0) printf("Fizz Buzz ¥n");
        else if (i % 3 == 0) printf("Fizz¥n");
        else if (i % 5 == 0) printf("BuzzYn");
        else printf("¥n");
    }

① (ア)と(イ)と(ウ),いずれを入れても正しく動作する。

② (ア)又は(イ)を入れたときのみ正しく動作する。

③ (ア)又は(ウ)を入れたときのみ正しく動作する。

④ (イ)又は(ウ)を入れたときのみ正しく動作する。

⑤ (ウ)を入れたときのみ正しく動作する。

 

 

答え

      ①

解説

  1. 正しく動作します。
    "?"を含む演算子は、条件演算子または三項演算子と言います。
     A ? B : C
    の場合、
     Aが真(0でない)→B
     Aが偽(0である)→C
    となります。
  2. 正しく動作します。
    文字列のポインタ配列を用いています。
  3. 正しく動作します。
    表示パターンを if-else で網羅する直感的にわかりやすいプログラムです。