コース一覧
    C言語基礎 制御フロー編
    定番 FizzBuzz判定

    C言語基礎 制御フロー編

    C言語の条件分岐と繰り返しを学び、処理の流れを組み立てるコースです。

    1
    条件分岐
    01. if文15分
    02. else ifで多分岐15分
    03. switch文15分
    04. 三項演算子15分
    05. 定番 FizzBuzz判定15分
    06. 条件の組み合わせ15分
    07. つくる 合否とランク判定15分
    08. 第3章クイズ10分
    2
    繰り返し
    01. for文15分
    02. while15分
    03. do-while15分
    04. breakとcontinue15分
    05. 二重ループ(九九)15分
    06. FizzBuzzループ版15分
    07. つくる N人分の入力15分
    08. 第4章クイズ10分

    定番 FizzBuzz判定

    条件を並べる順番のドリル

    FizzBuzz は、条件分岐の練習として世界中で使われている定番の題材です。ルールは次のとおりです。3の倍数なら Fizz、5の倍数なら Buzz、3と5の両方の倍数なら FizzBuzz、どれでもなければ数をそのまま表示します。

    1から100まで並べる版が有名ですが、繰り返しはまだ習っていないので、今回は数をひとつ受け取って1回だけ判定します。繰り返しと組み合わせる版は第4章で作ります。今回学ぶのは、条件を並べる順番という一点です。

    倍数の判定は剰余で

    「3の倍数」は、3で割った余りが0ということです。第2章で使った剰余演算子 % がそのまま使えます。

    c

    if (n % 3 == 0) {
        printf("Fizz\n");
    }

    % は == より先に計算されるので、(n % 3) == 0 と同じ意味になります。かっこを付けても構いません。

    素直に書くと FizzBuzz が出ない

    多くの人が最初にこう書きます。

    c

    if (n % 3 == 0) {
        printf("Fizz\n");
    } else if (n % 5 == 0) {
        printf("Buzz\n");
    } else if (n % 3 == 0 && n % 5 == 0) {
        printf("FizzBuzz\n");
    } else {
        printf("%d\n", n);
    }

    15 を入れてみると Fizz と出ます。15 は3の倍数なので1つ目の条件で確定し、else if の性質どおり残りは評価されないからです。3つ目の条件はどんな数を入れても真になりません。到達できない枝は、書いた本人以外にはバグに見えないので厄介です。

    厳しい条件を先に置く

    直し方は前回と同じ考え方です。当てはまる数が最も少ない、つまり最も厳しい条件を先頭に置きます。

    c

    if (n % 3 == 0 && n % 5 == 0) {
        printf("FizzBuzz\n");
    } else if (n % 3 == 0) {
        printf("Fizz\n");
    } else if (n % 5 == 0) {
        printf("Buzz\n");
    } else {
        printf("%d\n", n);
    }

    3と5の両方の倍数は3の倍数でもあるので、両方の判定を先に済ませておく必要があります。なお n % 3 == 0 && n % 5 == 0 は n % 15 == 0 と書いても同じ結果です。3と5に共通の倍数は15の倍数だからです。意図が伝わるのは前者、短いのは後者で、どちらを選んでも構いません。

    要件

    1. scanf で整数を1つ読む
    2. 3と5の両方の倍数なら FizzBuzz と表示する
    3. 3の倍数だけなら Fizz、5の倍数だけなら Buzz と表示する
    4. どれでもなければ読み込んだ数をそのまま表示する
    5. 表示するのは1行だけにする

    ヒント

    倍数の判定は n % 3 == 0 のように剰余が0かどうかで書きます

    3と5の両方の判定を一番上に置かないと、15 のときに Fizz で確定してしまいます

    生田 陸人
    監修生田 陸人
    ゆめさくエンジニア / 現役ソフトウェアエンジニア監修者プロフィールを見る →
    編集 ゆめさく編集部·公開 2026/08/07

    関連レッスン

    • 条件の組み合わせ

      入れ子になった条件を整理して書けるようになります。

    • つくる 合否とランク判定

      分岐一式を組み合わせて合否とランクを出せるようになります。

    • 第3章クイズ

      第3章の理解を確認します。

    • for文

      回数を指定して繰り返せるようになります。

    このレッスンに出てくる用語

    意味があいまいなまま進んだ語は、ここから読み直せます。

    • 剰余演算子% で割り算の余りを得る演算子
    • 演算子//は切り捨て除算(7 // 2 = 3)。
    • 評価出力品質を数値化して継続改善する活動
    main.c
    エディタを読み込んでいます

    メモ

    定番 FizzBuzz判定

    ⌘S で保存