c语言万年历代码作业,C语言实现万年历代码实例

#include#defineLMonth 31#defineSMonth 30#defineVMonth 28typedefenum{

Sun,

Mon,

Jue,

Wed,

Thu,

Fri,

Sat

} WEEK;

typedefenum{

January=1,

February,

Match,

Apirl,

May,

June,

July,

August,

September,

October,

November,

December

} MONTH;voidprintMonHead(void)

{

printf("Sun    Mon    Jue    Wed    Thu    Fri    Sat\n");

}voidprintMonth(constWEEK firstDay,intlength )

{

WEEK weekDay=firstDay%7;inti;

printMonHead();for(i=0; i

{

printf("");

}for(i=1;i<=length;++i)

{

weekDay=(++weekDay)%7;

printf("%7d", i);if(weekDay==0) printf("\n");

}

printf("\n");

}intisLeapYear(constintyr)

{return( yr%( yr%100?4:400)?0:1);

}intgetYearDay(constintyear)

{intlastYear=year-1;intyearNum=lastYear-1899;intwalker,counter=0;for(walker=1900; walker

{if(isLeapYear(walker)==1)++counter;

}return(365*yearNum+counter+1)%7;

}voidprintYear(constinty)

{

WEEK yDay=getYearDay(y);intvDay=isLeapYear(y);intmonWeeks[13];intmonLen  [13];

monLen[0]=0;

monLen[January]=31;     monLen[February]=28+vDay;   monLen[Match]=31;

monLen[Apirl]=30;       monLen[May]=31;             monLen[June]=30;

monLen[July]=31;        monLen[August]=31;          monLen[September]=30;

monLen[October]=31;     monLen[November]=30;        monLen[December]=31;

monWeeks[0]=0;

monWeeks[January]=yDay;

monWeeks[February]=((monWeeks[January]+monLen[January]        )%7);

monWeeks[Match]=((monWeeks[February]+monLen[February]       )%7);

monWeeks[Apirl]=((monWeeks[Match]+monLen[Match]          )%7);

monWeeks[May]=((monWeeks[Apirl]+monLen[Apirl]          )%7);

monWeeks[June]=((monWeeks[May]+monLen[May]            )%7);

monWeeks[July]=((monWeeks[June]+monLen[June]           )%7);

monWeeks[August]=((monWeeks[July]+monLen[July]           )%7);

monWeeks[September]=((monWeeks[August]+monLen[August]         )%7);

monWeeks[October]=((monWeeks[September]+monLen[September]      )%7);

monWeeks[November]=((monWeeks[October]+monLen[October]        )%7);

monWeeks[December]=((monWeeks[November]+monLen[November]       )%7);inti;for(i=January; i<=December;++i)

{

printf("\n-------------------------------------------------\n");

printf("%d, %d                      \n",y,i);

printf("-------------------------------------------------\n");

printMonth(monWeeks[i],monLen[i]);

printf("\n");

}return;

}intmain(void)

{//int y3 = 2000;//int y3 = 1946;//printYear(y3);inty;intquit=0;do{

printf("Please enter which Year to Print For You (0 to quit):");

scanf("%d",&y);

printf("\n");if(y==0)

quit=1;elseprintYear(y);

}while(!quit);return0;

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
C语言万年历代码是一种独特而有趣的编程代码,可以根据用户输入的年份和月份来打印出对应的日历。该代码使用了循环和条件判断等基本的编程概念,结合了日期计算和字符串处理技巧,具有一定的挑战性和技术含量。 代码首先会要求用户输入一个年份和一个月份,然后通过一系列的计算和判断,确定该月的第一天是星期几,并根据这一信息打印出整个月的日历。为了实现日历的美观,代码还使用了一些格式化输出的技巧,使得日历具有良好的可读性。 在代码中,可以看到使用了多重循环来处理和打印日期,以及一些条件判断的语句用来确定日期的位置和格式。代码中还用到了一些数组和变量来保存和处理数据,以及一些简单的函数来实现日期的计算和处理。 独特之处在于代码的复杂度和灵活性。万年历代码可以应对各种不同的输入情况,包括润年和闰月等特殊情况,并能正确地输出对应的日历。此外,通过适当的修改和优化,代码还可以扩展到更多功能,如输出指定日期的详细信息,或者实现一个交互式的日历应用程序等。 总之,独特的C语言万年历代码是一个有趣而有挑战性的编程项目,不仅可以增强对于C语言基本概念和技术的理解,也可以提高编程能力和逻辑思维能力。通过编写这样的代码,可以提升自己的编程水平,同时也可以享受到编程带来的乐趣。无论是对于初学者还是有一定经验的程序员来说,编写独特的C语言万年历代码都是一种有意义的挑战。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值