判断一个日期是否合法
年为负表示公元前,合法;
月和日为负,非法。

输入
一行,年月日

输出
合法输出yes,非法输出No

#include <stdio.h>

int check(int y, int m, int d) {
if (m <= 0 || m > 12 || d <= 0 || d > 31) return 0;
int month[13] = {0, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};
if (((y & 3) == 0 && y % 100) || y % 400 == 0) month[2] += 1;
return d <= month[m];
}

int main() {
int y, m, d;
scanf("%d%d%d", &y, &m, &d);
printf("%s\n", check(y, m, d) ? "Yes" : "No");
return 0;
}