#include <stdio.h>
int main(void)
{
char const *n = "", *fz = "Fizz", *bz = "Buzz";
char bzfz[10] ={'\0'}, num[10] = {'\0'};
char const *fizz[] = {fz,n,n}, *buzz[] = {bz,n,n,n,n}, *number[] = {n,num};
int l;
for( int loop = 1; loop <= 20; loop++ )
{
l = sprintf( bzfz, "%s%s",
buzz[loop%(sizeof(buzz)/sizeof(char*))],
fizz[loop%(sizeof(fizz)/sizeof(char*))] );
sprintf( num, "%d", loop );
printf("%s%s\n", number[!l], bzfz );
}
return 0;
}
条件演算子の代わりに、配列とsizeofによる余剰でループを使用。
数字を出す条件はBuzzないしFizzを出力した文字数で判定。