そんなんどっちもいらんわな。
http://showyou41.dyndns.org/blog/?p=311
個人的にはfizzbuzz解けないのにエンジニア名乗る人は一発ぶん殴れば終わりますが、人の話全然聞かない人は雇いたくないですね。。。
いやそんなん、どっちも雇いたくないけども。
で、まあいつもどおりに正面から捻りなく。
1900年から2010年までのうち、毎年の日数を出力するプログラムを作ってください。ただしうるう年は次の条件で発生します。出力形式はfizzbuzzみたいに1900年の日数から順番に出てくればなんでもいいです。
4の倍数の年はうるう年。
ただし、100の倍数の年はうるう年じゃない。
でも、やっぱり400の倍数の年はうるう年
#include <stdio.h> #include <stdlib.h> int main(int argc, char **argv) { int year; for(year = 1900; year <= 2010; year++) { int feb29 = !(year % 400) || (!(year % 4) && (year % 100)); printf("%04d : [%d]\n", year, 365 + feb29); } return EXIT_SUCCESS; }
あと、おまけはこっちな。
明治元年から平成二十四年までの毎年の日数を出力するプログラムを作ってください。
昭和64年で7日とかいうのを出す回答を期待しているのでなければ以下のような感じか。
#include <stdio.h> #include <stdlib.h> struct { const char * label; int epoch; } NameOfEra[] = { { "M", 1868 }, { "T", 1912 }, { "S", 1926 }, { "H", 1989 }, { NULL, 9999 } }; int main(int argc, char **argv) { int era = 0; int year = NameOfEra[era].epoch; do { int feb29 = !(year % 400) || (!(year % 4) && (year % 100)); printf("%s.%d(%04d) : [%d]\n", NameOfEra[era].label, year - NameOfEra[era].epoch + 1, year, 365 + feb29); if(++year >= NameOfEra[era + 1].epoch) era++; } while(year < NameOfEra[3].epoch + 24); return EXIT_SUCCESS; }