Никогда не считал себя особо оригинально мыслящим, но вот странно, в решениях
задачи FizzBuzz никто не предлагает решения, которое мне кажется очевидным. Я бы написал что-то вроде такого:
#include
const char* fmt_str[4] = { "%d\n", "Fizz\n", "Buzz\n", "FizzBuzz\n" };
int main(int argc, char* argv[]) {
for(int i=1;i<=100;i++)
printf(fmt_str[(i%3?0:1)+(i%5?0:2)], i);
return 0;
}
А с точки зрения наименьшего количества операций такая вот программа будет более эффекивной, но трудно понять, что за задача решается ;o) :
#include
const char* fmt_str[15] = {"FizzBuzz\n", "%d\n", "%d\n", "Fizz\n",
"%d\n", "Buzz\n", "Fizz\n" "%d\n", "%d\n",
"Fizz\n", "Buzz\n", "%d\n", "Fizz\n",
"%d\n", "%d\n"};
int main(int argc, char* argv[]) {
for(int i=1;i<=100;i++)
printf(fmt_str[i%15], i);
return 0;
}
Upd: хотя вру, такое решение предлагают, хотя и редко.