C语言程序设计万年历

2.功能要求:模仿现实生活中的挂历. 当前页以系统当前日期的月份为准显示当前月的每一天(显示出日及对应的星期几).当系统日期变到下一月时,系统自动翻页到下一月. 1、对系统进行功能模块分析、控制模块分析正确,符合课题要求,实现相应功能;可以加以其他功能或修饰,使程序更加完善、合理;2、系统设计要实用,编程简练、可用,功能全面3、说明书、流程图要清楚4、记录设计情况(备查,也为编写设计说明书作好准备); 5、要求采用模块化程序设计方法,及锯齿型书写格式,要求上机调试通过和按设计报告格式

第1个回答  2019-02-13
#include
<stdio.h>
int
leap
(int
year)
{if(year%4==0&&year%100!=0||year%400==0)
//判断是否是闰年
return
1;
else
return
0;
}
int
days_month
(int
month,int
year)
//判断大月和小月
{
if(month==1||month==3||month==5||month==7||month==8||month==10||month==12)
//找出大月
return
31;
if(month==4||month==6||month==9||month==11)
//找出小月
return
30;
if(month==2&&leap(year)==1)
return
29;
//判断二月是29天还是29天
else
return
28;
}
int
firstday(int
month,int
year)
{int
w;
w=(1+2*month+3*(month+1)/5+year+year/4+year/400-year/100)%7+1;
//判断每个月开始的第一天是星期几
return
w;
}
main()
{int
i,j=1,k=1,a,b,month,year;
printf("\n
input
month
and
year:\n");
scanf("%d%d",&month,&year);
//输入月和年
b=days_month(month,year);
a=firstday
(month,year);
printf("
Sun
Mon
Tue
Wed
Thu
Fri
Sat
\n");
//输出对应当月的日历
if(a==7)
{for(i=1;i<=b;i++)
{printf("%4d",i);
if(i%7==0)
{printf("\n");
}
}
}
if(a!=7)
{while
(j<=4*a)
{printf("
");
j++;
}
for(i=1;i<=b;i++)
{printf("%4d",i);
if(i==7*k-a)
{printf("\n");
k++;
}
}
}
printf("\n");
}