万年历的c语言实现源程序.docx
《万年历的c语言实现源程序.docx》由会员分享,可在线阅读,更多相关《万年历的c语言实现源程序.docx(6页珍藏版)》请在冰豆网上搜索。
万年历的C语言编程实现源程序:
#include
#include
intIsleapyear(inty)/*判断是否是闰年*/
{
if((y%4==0&&y%100!
=0)||(y%400==0))
return1;
else
return0;
}
intGetdaysofmonth(inty,intm)/*确定某个月的天数*/
{
intmonths[13]={0,31,28,31,30,31,30,31,31,30,31,30,31};
if(Isleapyear(y))/*如果是闰年则2月份的天数改变为29*/
months[2]=29;
returnmonths[m];
}
intGettotaldays(inty,intm)/*计算从1901年1月开始到给定年月的天数*/
{
intmonths[13]={0,31,28,31,30,31,30,31,31,30,31,30,31};
intdays=0;
inti,j;
if((Isleapyear(y)))
months[2]=29;
for(i=1901;i {
if(Isleapyear(i))
days+=366;
else
days+=365;
}
for(j=1;j days+=months[j];
returndays;
}
intGetfirstdayintable(inty,intm)/*计算给定年月的第一天在日历表中的位置*/
{
intd;
d=Gettotaldays(y,m);
d=d+3;/*1901年1月1日是星期二,在日历中星期二是第三个位置*/
d=d%7;
returnd;
}
voidShowdate(inty,intm)/*显示日历*/
{
intfirst;
intd;
inti,k;
first=Getfirstdayintable(y,m);/*得到第一天在日历中的第一个位置*/
d=Getdaysofmonth(y,m);/*得到这个月的天数*/
k=0;
printf("-------------------------------------\n");
printf("SUNMONTUEWENTHUFRISTA\n");
for(i=1;i {
printf("");
k++;/*k用于确定日历中是否回车*/
}
for(i=1;i<=d;i++)
{
printf("%5d",i);/*每个具体的日期占5个字符的宽度*/
k++;
if(k==7)/*每行打印7个日期数字后回车*/
{
printf("\n");
k=0;
}
}
printf("\n-------------------------------------\n");
}
intmain(){
inty,m;
printf("Inputyear:
");
scanf("%d",&y);
printf("Inputmonth:
");
scanf("%d",&m);
Showdate(y,m);
return0;
}