# C语言实现日历输出

#ifndef MAIN_H
#define MAIN_H

#include "stdio.h"
#include "math.h"
#include "stdlib.h"

//获取某一个月的最大天数
int monthday(int,int );

//判断闰年 ,是返回1，不是返回0
int isleapyear(int );

#endif 

#include "main.h"

int main()
{
int year,month,days,weekday;
int i,d;
while(1)
{
scanf("%d",&year);
days = year-1+(year-1)/400+(year-1)/4-(year-1)/100;//计算某年第一天是星期几

for(month=1;month<=12;month++)
{
printf("\t\t****%d年--%d月****\n",year,month);
printf("sun\tmon\ttues\twed\tthur\tfir\tsat\t\n");//表头
i = 1;    d = 1;
weekday = (days + 1)%7;  //求星期几
while(i<=weekday)   //输出前面的空格
{
printf("\t");
i++;
}

while(d<=monthday(month,year))     //输出日期
{
weekday = (days + 1)%7;
if(weekday==6)   //最后一个是星期六，输出之后要换行
printf("%d\n",d);
else             //不是星期六的输出后不换行
printf("%d\t",d);
if(d==monthday(month,year))
printf("\n");
d++;
days++;
}
}
}

}

#include "main.h"

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))
{
return 29;//闰年29天
break;
}
else
{
return 28;
break;
}

}

}

int isleapyear(int year)
{
if((year%4==0)&&(year%100!=0)||(year%400==0))
return 1;
else
return 0;
}

posted @ 2017-06-16 21:45  Andrew_qian  阅读(11400)  评论(0编辑  收藏  举报