ルールは、
(http://vipprog.net/wiki/exercise.html より)
- 1から順番に数を表示する
実行例
- その数が3で割り切れるなら"Fizz"、5で割り切れるなら"Buzz"、両方で割り切れるなら"FizzBuzz"と表示する
1 2 Fizz 4 Buzz Fizz 7 8 Fizz Buzz 11 Fizz 13 14 FizzBuzz 16 17 Fizz 19 Buzz Fizz 22 23 Fizz Buzz 26 Fizz 28 29 FizzBuzz 31 32 Fizz 34
私は↓のように組んでみました。
#include <stdio.h>
int main(void) {
int i;
for(i = 1; i <= 100; i++) {
if(!(i%3)) printf("Fizz");
if(!(i%5)) printf("Bizz");
if(i%3 && i%5) printf("%d",i);
printf("\n");
}
return 0;
}#include <stdio.h>
int main(void){
int i;
for(i = 1; i <= 100; i++){
if(i % 15 == 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;
}私のプログラムでは「FizzBizz」の時はprintf()関数が3回実行されてしまいます。
一方、解答例はどんなときもprintf()関数の実行は1回ですみます。ですが、私のソースより長く、条件分岐は多いです。
将来的にもっと複雑な処理を組むときには、私のやり方だと処理が低速になってしまうのでしょうか?
一概には言えないと思いますが、「プログラミング」ではどのような事が求められるでしょうか?
また、この問題でもっと良いアルゴリズムがあれば教えてください!