项目名称:万年历
项目描述:根据用户输入的年和月,输出相应的日历,如下图所示:
实现步骤:
1、输入年份和月份,判断输入年份是否是闰年
提示:闰年的判断条件--能被4整除并且不能被整除;或者能被整除
2、计算输入月份的天数
提示:可使用switch语句判断每个月的天数,闰年的2月是29天,平年的2月是28天
3、计算该月的第一天是星期几
提示:
(1)循环计算从年开始到输入年份的年份总天数;
(2)需要判断每一年是闰年还是平年,闰年有天,平年有天;
(3)计算输入的月份距离当年1月的天数,并和输入年份之前的天数进行累加;
(4)计算输入月份的第一天是星期几,以年1月1日星期一为基准进行推算:
星期X=(1+总天数)%7;周一到周6,可以使用数字1-6表示,数字0表示周日。
4、按格式输出日历
(1)按格式依次输出:
星期日星期一星期二星期三星期四星期五星期六
(2)用循环输出空格,根据输入月份的1日是星期几来决定空格的数量;
(3)用循环输出当月的所有天数;
提示:输出时可以考虑使用\t,类似于tab键。
第一部分先实现第一二步,示例代码如下,
#define_CRT_SECURE_NO_WARNINGS1
#includestdio.h
#defineSTART_YEAR
intmain(){
printf("----------------------欢饮使用简易日历系统-------------------------\n");
intyear,month,monthDays;
//1、输入年份和月份,判断输入年份是否是闰年
do{
printf("请输入年份:");
scanf("%d",year);
rewind(stdin);
}while(yearSTART_YEAR);
do{
printf("请输入月份:");
scanf("%d",month);
rewind(stdin);
}while(month1
month12);
intisLeapYear=0;
if(year%4==0year%!=0
year%==0){
//闰年
isLeapYear=1;
}
printf("isLeapYear=%d\n",isLeapYear);
//计算输入月份的天数
switch(month){
case1:
case3:
case5:
case7:
case8:
case10:
case12:
monthDays=31;
break;
case4:
case6:
case9:
case11:
monthDays=30;
break;
case2:
if(isLeapYear==1){
monthDays=29;
}else{
monthDays=28;
}
break;
}
printf("monthDays=%d\n",monthDays);
return0;
}
大月测试如下,
小月测试如下,
2月测试如下,