由用户输入一个年份,计算机将根据用户输入的年份输出这一年所有月份的日历。关键是要确定该年是否是闰年,以及求某个月第一天是星期几。
运行效果:
代码:
#include <stdio.h>
#include <stdlib.h>
int monthDay(int,int);//获取某个月的天数
int isLeapYear(int);//判断某一年是否是闰年
int main()
{
int days,weekDay,year,month=1,d,i;
printf("请输入年:n");
scanf("%d",&year);
//计算某一年某个月第一天星期几
days=year-1+(year-1)/400+(year-1)/4-(year-1)/100;
while(month<=12)
{
printf("%d-%dn",year,month);
printf("SuntMontTuestWedtThurtFirtSatn");
d=1,i=1;
weekDay=(days+1)%7;//求星期几
while(i<=weekDay)
{
printf("t");
i++;
}
while(d<=monthDay(month,year))
{
weekDay=(days+1)%7;
if(weekDay==6)
printf("%dn",d);
else
printf("%dt",d);
if(d==monthDay(month,year))
printf("n");
d++;
days++;
}
month++;
printf("n");
}
system("pause");
return 0;
}
int monthDay(int month, int year)
{
switch(month)
{
case 1:case 3:case 5:case 7:case 8:case 10:case 12:
return 31;
break;
case 4:case 6:case 9:case 11:
return 30;
break;
case 2:
if((IsLeapYear(year))==1)
return 29;
else
return 28;
break;
}
}
int IsLeapYear(int year)
{
if((year%4==0)&&(year%100!=0))
return 1;
if(year%400==0)
return 1;
return 0;
}
-End-