FizzBuzzに取り組むカワウソ


FizzBuzzとは

FizzBuzzって知ってますか?

1から100までの数をプリントするプログラムを書け。
ただし3の倍数のときは数の代わりに「Fizz」と、5の倍数のときは「Buzz」とプリントし、
3と5両方の倍数の場合には「FizzBuzz」とプリントすること。

(どうしてプログラマに・・・プログラムが書けないのか? Jeff Atwood / 青木靖 訳)より引用
[http://www.aoky.net/articles/jeff_atwood/why_cant_programmers_program.htm]

カワウソもプログラミングテストでこのFizzBuzz(具体的にはもうちょい発展したやつ)のコードを書く機会がありました。

今回は復習として改めてFizzBuzzをやっていこうと思います。
宮大はC言語に親しみがあるのでCでやります。キュー

フローチャート

解いてみる

fizzbuzz.c
#include <stdio.h>
int main(void) {
    int i;
    for (i = 1; i <= 100; 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("%d\n", i);
        }
    }
    return 0;
}

コンパイルして実行する

gcc -o fizzbuzz fizzbuzz.c
./fizzbuzz

できた!

1
2
Fizz
4
Buzz
Fizz
7
8
Fizz
Buzz
11
Fizz
13
14
FizzBuzz
16
17
(略)
97
98
Fizz
Buzz

関数を作ってみるよ

fizzbuzz_func.c
#include <stdio.h>

//自作関数
void FizzBuzz(int n){
  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);
  }
}

int main(void) {
  int i;
    for (i = 1; i <= 100; i++) {
      //関数FizzBuzを呼び出し
      FizzBuzz(i);
    }
  return 0;
}

コンパイルして実行する

gcc -o fizzbuzz_func fizzbuzz_func.c
./fizzbuzz_func
1
2
Fizz
4
Buzz
Fizz
7
8
Fizz
Buzz
11
Fizz
13
14
FizzBuzz
16
17
(略)
97
98
Fizz
Buzz

まとめ

C言語でFizzBuzzを解いてみました。
解き方は他にもあると思いますが、今回やってみた方法が理解しやすいと思いました。
もっとスマートな方法を知っている方は教えてください。