用C语言编写万年历,急!

请使用C语言设计一个万年历和记事本
功能如下:
(1)任意输入一个日期(年月日),程序可输出本年12个月的日历(按日历形式,要有星期,可以不输出相应的农历日子)
(2)同时程序自动会对该输入的日期(如2010年6月1日)自动生成一个(名为20100601.txt)文本文件存放在自己的优盘上,在该文件上记录当日的日记(至少有12个文件最终存放在自己的优盘上,这12个文件内容是有关你当天对该课程设计的日记)。文件的读写操作必须编写成函数。

已经编译运行确认过。

#INCLUDE <STDIO.H>
#INCLUDE <STDLIB.H>
INT LEAP(INT); /*判断是否为闰年*/
INT MD(INT M,INT Y); /*返回本月的天数*/
VOID PRTWEEK(VOID); /*输出表头*/
INT FW(INT M,INT Y); /*返回本月一号是星期几*/
VOID PRTMONTH(INT M); /*输出月份表头*/
INT MAIN(VOID)
{
INT Y,M,I,TEST,WEEK;
PRINTF("PLEASE IMPORT YEAR OF YOU WANT TO SELECT : ");
SCANF("%D",&Y);
FOR (M=1; M<=12; M++) {
TEST=1;
PRTMONTH(M);
PRTWEEK();
WEEK=FW(M,Y);
IF (WEEK!=6)
FOR (I=0; I<=WEEK; I++) {
PUTCHAR('\T');
TEST++;
}
FOR (I=1; I<=MD(M,Y); I++,TEST++) {
PRINTF("%D\T",I);
IF (TEST%7==0) {
PUTCHAR('\N');
}
}
PUTCHAR('\N');

SYSTEM("PAUSE");//暂停,以便观察输出
}
RETURN 0;
}
INT LEAP(INT Y)
{
RETURN (Y%4==0&&Y%100||Y%400==0)?1:0;
}
INT MD(INT M,INT Y)
{
INT D;
SWITCH (M) {
CASE 1:
CASE 3:
CASE 5:
CASE 7:
CASE 8:
CASE 10:
CASE 12:D=31;BREAK;
CASE 4:
CASE 6:
CASE 9:
CASE 11:D=30;BREAK;
CASE 2:D=LEAP(Y)?29:28;BREAK;

}
RETURN D;
}
VOID PRTWEEK(VOID)
{
PRINTF("%S\T%S\T%S\T%S\T%S\T%S\T%S\T\N","SUN","MON","TUE","WED","THUR","FRI","SAT");
}
INT FW(INT M,INT Y)
{
INT F;
IF (M<3) {
M+=12;
Y--;
}
F=(1+2*M+3*(M+1)/5+Y+Y/4-Y/100+Y/400)%7;
RETURN F;
}
VOID PRTMONTH(INT M)
{
SWITCH (M) {
DEFAULT:
CASE 1:PUTS("===JANUARY===");BREAK;
CASE 2:PUTS("===FEBRUARY===");BREAK;
CASE 3:PUTS("===MARCH===");BREAK;
CASE 4:PUTS("===APRIL===");BREAK;
CASE 5:PUTS("===MAY===");BREAK;
CASE 6:PUTS("===JUNE===");BREAK;
CASE 7:PUTS("===JULY===");BREAK;
CASE 8:PUTS("===AUGUST===");BREAK;
CASE 9:PUTS("===SEPTEMBER===");BREAK;
CASE 10:PUTS("===OCTOBER===");BREAK;
CASE 11:PUTS("===NOVEMBER===");BREAK;
CASE 12:PUTS("===DECEMBER===");BREAK;
}
温馨提示:答案为网友推荐,仅供参考

相关了解……

你可能感兴趣的内容

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 非常风气网