#include <stdio.h>
int yy(int date,int weekdays) //输出函数,输出该月月历
{
int i,j=0;
printf("该月的月历如下:\n");
printf("Sun Mon Tue Wed Thu Fri Sat");
for(i=1;i<=date;) //计算本月第一天是周几。
{
if(j<weekdays)
printf(" ");
else
tf("%3d ",i++) prin;
if(j%7==0)
printf("\n");
j++;
}
}
int ryear(int year) //判断是否为闰年
{
if (year%400==0||year%4==0&&year%100!=0)
return 1;
else
return 0;
}
int year(int year) //计算之前年份的总天数
{
int i,days=0;
for(i=1;i<=year;i++)
{
if(ryear(i)) //若是闰年,天数为366天,否则是365天。
days+=366;
else
days+=365;
}
return days;
}
int month(int year,int month) //计算该年前几个月份的总天数
{
int days=0;
if(month>1)
days+=31;
if(month>2)
{
if(ryear(year)) //若是查询闰年2-12月份,则天数+29,否则天数+28
c语言教程免费全套视频 days+=29;
else
days+=28;
}
if(month>3)
days+=31;
if(month>4)
days+=30;
if(month>5)
days+=31;
if(month>6)
days+=30;
if(month>7)
days+=31;
if(month>8)
days+=31;
if(month>9)
days+=30;
if(month>10)
days+=31;
if(month>11)
days+=30;
else
days+=0;
return days;
}
int date(int year,int month) //分析该月天数
{
//int date;
int date[13];
if (ryear(year))
{
date[0]=0,date[1]=31,date[2]=29,date[3]=31,date[4]=30,date[5]=31,date[6]=30,
date[7]=31,date[8]=31,date[9]=30,date[10]=31,date[11]=30,date[12]=31;
}
else
{
date[0]=0,date[1]=31,date[2]=28,date[3]=31,date[4]=30,date[5]=31,date[6]=30,
date[7]=31,date[8]=31,date[9]=30,date[10]=31,date[11]=30,date[12]=31;
}
return date[month];
}
int day(int day) //总天数
{
int days=0;
days+=day;
}
int face() //欢迎语
{
printf("\n");
printf(" ┏━━━━━━━━┓\n");
printf(" ┃欢迎使用万年历!┃\n");
printf(" ┗━━━━━━━━┛\n");
printf("\n");
printf("\n");
}
int main() //主函数
{
int a,b,days,weekdays;
face();
printf("请输入要查询的年月份(中间用空格间隔):\n"); //输入
scanf("%d %d",&a,&b); //输入年月份
days=year(a)+month(a,b); //调用年函数和月函数
weekdays=days%7;
yy(date(a,b),weekdays); //调用输出函数
}
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论