/*FizzBuzzの判定を行うプログラム*/
//デバッグが終わったらコメントアウトを外す
#define NDEBUG
#include <stdio.h>
#include <assert.h>
#define SAIDAI 100 //判定する値の最大値(最小は1からとする)
#define FIZZ 3 //Fizzと判定する倍数
#define BUZZ 5 //Buzzと判定する倍数
#define FIZZBUZZ (FIZZ*BUZZ) //FizzBuzzと判定する倍数
/*プロトタイプ宣言*/
int func();
int main(void){
/*変数宣言*/
int max=SAIDAI;
int f=FIZZ;
int b=BUZZ;
int fb=FIZZBUZZ;
int i;
/*FizzBuzz判定を行うfunc関数を、指定回数ループさせる*/
for(i=1;i<max+1;i++){
func(i,f,b,fb);
}
/*assertでテストを行う*/
#if !defined(NDEBUG)
printf("ここから下はassertの出力です\n");
#endif
assert(func(1,3,5,15)==3);
assert(func(3,3,5,15)==1);
assert(func(5,3,5,15)==2);
assert(func(15,3,5,15)==0);
return 0;
}
/*FizzBuzz判定を行うfunc関数
引数 int i 判定する数字
int f Fizzと判定する倍数
int b Buzzと判定する倍数
int fb FizzBuzzと判定する倍数
戻り値 int hantei:判定結果を代入する変数
hantei=0 FizzBuzz
hantei=1 Fizz
hantei=2 Buzz
hantei=3 それ以外(出力は数字そのものを表示)
*/
int func(int i,int f,int b,int fb){
int hantei=-1;
if(i%fb==0){
printf("FizzBuzz\n");
hantei=0;
}else if(i%f==0){
printf("Fizz\n");
hantei=1;
}else if(i%b==0){
printf("Buzz\n");
hantei=2;
}else{
printf("%d\n",i);
hantei=3;
}
return hantei;
}