寒假在学单片机,很辛苦,于是做了个万年历放松一波
#include<stdio.h>
int judgeyear(int a) //判断是否是闰年的函数
{
if(a%4==0 && a%100!=0)
return 0;
else
return 1;
}
int main()
{
int year,month,days=0; //年月及表示每个月第一天
int i,j;
int firstday; //每个月的第一天星期几
int whatday; //表示这一天是哪一天
int runyear[12]={31,29,31,30,31,30,31,31,30,31,30,31};
int pingyear[12]={31,28,31,30,31,30,31,31,30,31,30,31};
while(1)
{
printf("请输入年份和月份\n");
scanf("%d %d",&year,&month);
if(year<1978 || month>12 || month<1 ) //利用1978年一月一日是星期天比较容易算
{
printf("输入错误\n");
continue;
}
else
{
for(i=1978;i<year;i++)
{
if(judgeyear(i)==1)
days+=365;
if(judgeyear(i)==0)
days+=366;
}
//printf("%d\n",days);
if(judgeyear(year)==1)
{
for(i=0;i<month-1;i++)
{
// printf("%d\n",pingyear[i]);
days=pingyear[i]+days;
}
}
if(judgeyear(year)==0)
{
for(i=0;i<month-1;i++)
{
days=runyear[i]+days;
}
}
//printf("%d\n",days);
days=days+1; //前面的加起来之后 ,再加一天就是每个月的第一天
firstday=days%7; //天数除以多少余多少就是星期几
whatday=firstday;
// printf("%d\n",firstday);
printf("Sun\tMon\tTue\tWen\tThu\tFri\tSat\t\n");
for(i=0;i<firstday;i++)
printf("\t");
// printf("1\n");
if(judgeyear(year)==1)
{
for(i=1;i<=pingyear[month-1];i++)
{
printf("%d\t",i);
whatday++;
if(whatday==7)
{
whatday=0;
printf("\n");
}
}
}
if(judgeyear(year)==0)
{
for(i=1;i<=runyear[month-1];i++)
{
printf("%d\t",i);
whatday++;
if(whatday==7)
{
whatday=0;
printf("\n");
}
}
}
printf("\n");
days=0; //重新置零防否则第二次判断的时候天数会累计加起来
firstday=0;
whatday=0;
}
}
return 0;
}