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を解いてみました。
解き方は他にもあると思いますが、今回やってみた方法が理解しやすいと思いました。
もっとスマートな方法を知っている方は教えてください。