水贴一张。给老师代课时写的代码。来骗波访问量。
根据输入的年月日,来判断是否合法。(代码没有判断输入的月份为负数、大于12等等情况)。
主要思想:判断是否为闰年,确定2月的日期范围。
根据月份,判断日期的范围。
#define _CRT_SECURE_NO_WARNINGS
#include "stdio.h"
#include "stdbool.h"
struct Date
{
int year;
int month;
int day;
};
typedef struct Date Date;
int checkDate(Date date){
int m = 0;
bool m_year;
m_year = ((date.year) % 4 == 0 && (date.year) % 100 != 0) || ((date.year) % 400 == 0); // 计算是否为闰年
switch (date.month){
case 1:
case 3:
case 5:
case 7:
case 8:
case 10:
case 12: if (date.day > 31) m = 1; break;
case 2: if (m_year && (date.day > 29))
m = 2;
else if (!m_year && (date.day > 28))
m = 4;
break;
default: if (date.day > 30) m = 3; break;
}
return m;
}
int main(){
Date date;
int mark;
scanf("%d%d%d", &date.year, &date.month, &date.day);
mark = checkDate(date);
switch (mark)
{
case 1:printf("error!!! %d 月最多只有31天\n", date.month); break;
case 2:printf("error!!! 闰月最多只有29天\n"); break;
case 4:printf("error!!! 平月最多只有28天\n"); break;
case 3:printf("error!!! %d月最多只有30天\n", date.month); break;
case 0: printf("right!!!"); break;
}
}