69,373
社区成员
发帖
与我相关
我的任务
分享
/* valid return 1, invalid return 0*/
int check_value(int year, int month, int day)
{
int leap = 0, ret = 1;
if ((year % 400) || (year % 4 == 0 && year % 100 != 0))
leap = 1;
if (month <= 0 || month > 12) {
fprintf(stdout, "Month invalid!\n");
ret = 0;
return ret;
}
switch (month) {
case 1:
case 3:
case 5:
case 7:
case 8:
case 10:
case 12:
if (day > 31 || day <= 0) {
fprintf(stdout, "Day invalid!\n");
ret = 0;
}
break;
case 2:
if (leap) {
if (day > 29 || day <= 0) {
fprintf(stdout, "Day invalid!\n");
ret = 0;
}
} else {
if (day > 28 || day <= 0) {
fprintf(stdout, "Day invalid!\n");
ret = 0;
}
}
break;
case 4:
case 6:
case 9:
case 11:
if (day > 30 || day <= 0) {
fprintf(stdout, "Day invalid!\n");
ret = 0;
}
break;
default:
break;
}
return ret;
}
每次输入年月日后都做一次检测,检测算法仅供参考