C语言编写万年历

来源:百度知道 编辑:UC知道 时间:2024/05/16 10:20:19
要求是输入年份~然后打印输出1-12月份每个月的日期和星期~
越快越好~急用~

#include"stdio.h"
void print(int);//函数声明
int dobb(int);
int date(int,int,int);
void main()
{
int year=0;
printf("输入打印的年份(XXXX)\n");
scanf("%d",&year);
print(year);
}
int dobb(int year)//闰年判断
{
if((year%4==0 && year%100!=0)|| (year%400==0))
return(1);
else return(0);
}
int date(int year,int month,int day)//判断该年某月某日是星期几的计算
{
int leap,cn=0,sum;//cn计算的是从该年1月1日起,到达这一天的天数总和
leap=dobb(year);
switch(month-1)
{
case 11:cn+=30;
case 10:cn+=31;
case 9:cn+=30;
case 8:cn+=31;
case 7:cn+=31;
case 6:cn+=30;
case 5:cn+=31;
case 4:cn+=30;
case 3:cn+=31;
case 2:if(leap) cn+=29;
else cn+=28;
case 1:cn+=31;
default:cn+=day;
}
sum=year-1+(year-1)/4-(year-1)/100+(year-1)/400+cn;//这是核心的一条公式,返回值是星期几(没有为什么)
return(sum%7);
}

void print(int