C言語のプログラミングについてです。 西暦をy年としてキー入力し、閏年か否かを判定するプログラムを作成してほしいです。

補足

4で割り切れるが閏年ではない年もあるので、つまづいています…

ベストアンサー

0

その他の回答(2件)

0

#include <stdio.h> #include <stdlib.h> #define ___ #define BC(y) (-(y) + 1) int is_leap_year(int y) { ___ if (y > 1582){ ___ ___ return y % 400 == 0 || (y % 4 == 0 && y % 100 != 0); ___ } else if (y > 7){ ___ ___ return y % 4 == 0; ___ } else if (y > BC(8)){ ___ ___ return 0; ___ } else if (y > BC(45)){ ___ ___ return (y + 1) % 3 == 0; ___ } ___ return 0; } int main(void) { ___ int year; ___ if (scanf("%d", &year) != 1){ ___ ___ return EXIT_FAILURE; ___ } ___ if (year > 0){ ___ ___ printf("A.D.%d", year); ___ } else { ___ ___ printf("B.C.%d", -year + 1); ___ } ___ if (is_leap_year(year)){ ___ ___ puts(" is leap year."); ___ } else { ___ ___ puts(" is not learp year."); ___ } ___ return EXIT_SUCCESS; }