変形Fizz-Buzz問題
Posted feedbacks - C
オーソドックスに
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 | #include <stdio.h>
int main()
{
int i;
for (i = 1; i <= 20; i++) {
printf("%2d:", i);
if (i%3 == 0)
printf("Fizz");
if (i%5 == 0)
printf("Buzz");
if (i%3 != 0 && i%5 != 0)
printf("hoge");
puts("");
}
return 0;
}
|
上のやつを、ifなしに変形してみる。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | #include <stdio.h>
int main()
{
int i;
for(i = 1; i <= 20; i++){
printf("%2d:", i);
(i%3) || printf("Fizz");
(i%5) || printf("Buzz");
(i%3) && (i%5) && printf("hoge");
printf("\n");
}
return 0;
}
|
1時間ほど考えましたが、これ以上思いつきませんでした☆
1 2 3 4 5 6 7 8 | #include<stdio.h>
int main(void){
char *a[]={"hoge","Fizz","Buzz","FizzBuzz"};
int i;
for(i=1;i<=20;i++)
printf("%2i:%s\n",i,a[!(i%3)+!(i%5)*2]);
return 0;
}
|
ども、raynstardです。 普段RSSベースでしか読んでいないので、思ったよりも落ち着いてるなぁと思ったら 実はすでに出尽くして後だったんですね(笑 else無しとした意図は、上から下までなるべく全部通るコードという感じでした。 && や || でつなげて反対の事かけば elseと変わらないのは思いつかなかったです^^;; まぁ、閑話休題、たまにはこういう好き放題遊べるお題も 楽しいかなと思ってみたりするテスト だから、直書きとかももちろんOKです! むしろもっとはじけていただいてもいっこうに(笑 ちなみに、これは直接出力するパターンですな できれば!= を外したかったのですが思いつかなかったですorz
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | #include <stdio.h>
int main(int argc, char *argv[])
{
int N=0;
for(N=1; N<=20; N++)
{
printf("%2d:%-s\r", N, "hoge");
if( (N%3) == 0 ) printf("%2d:%-s", N, "Fizz");
if( (N%5) == 0 )
{
if( (N%3) != 0 ) printf("%2d:", N);
printf("%-s","Buzz");
}
printf("\n");
}
return 0;
}
|




raynstard
#3758()
Rating0/2=0.00
[ reply ]