网页资讯视频图片知道文库贴吧地图采购
进入贴吧全吧搜索

 
 
 
日一二三四五六
       
       
       
       
       
       

签到排名:今日本吧第个签到,

本吧因你更精彩,明天继续来努力!

本吧签到人数:0

一键签到
成为超级会员,使用一键签到
一键签到
本月漏签0次!
0
成为超级会员,赠送8张补签卡
如何使用?
点击日历上漏签日期,即可进行补签。
连续签到:天  累计签到:天
0
超级会员单次开通12个月以上,赠送连续签到卡3张
使用连续签到卡
07月24日漏签0天
c语言吧 关注:798,846贴子:4,357,355
  • 看贴

  • 图片

  • 吧主推荐

  • 视频

  • 游戏

  • 1回复贴,共1页
<<返回c语言吧
>0< 加载中...

迭代进化 -- 万年历(C语言实现 TR4.2)

  • 只看楼主
  • 收藏

  • 回复
  • sohu2000000
  • 酱油
    4
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
论坛上的同学给出的建议:
QUOTE:
$ cal 9 1752
     September 1752
Su Mo Tu We Th Fr Sa
        1    2   ....
14 15 16 ....
17 18 19 20 21 22 23
...
jamesr 发表于 2010-08-30 08:39
应论坛上同学的建议,新的代码修改如下:
#include <stdio.h>
#include <ctype.h>
#define SYEAR 1900
#define LMonth 31
#define SMonth 30
#define VMonth 28
typedef enum {
     Sun,
     Mon,
     Jue,
     Wed,
     Thu,
     Fri,
     Sat
} WEEK;
typedef enum {
     January = 1,
     February,
     Match,
     Apirl,
     May,
     June,
     July,
     August,
     September,
     October,
     November,
     December
} MONTH;
void
printMonHead(void){
     printf(" Sun Mon Tue Wed Thu Fri Sat\n");
     return;
}
void
printMonth(const WEEK firstDay, unsigned long length ){
     WEEK weekDay = firstDay % 7;
     unsigned long i;
     printMonHead();
     for (i=0; i<weekDay;++i)
         printf(" ");
     for(i=1;i<=length;++i) {
         weekDay = (++weekDay)%7;
         printf("%7d", i);
         if(weekDay==0) printf("\n");
     }
     printf("\n");
     return;
}
unsigned long
isLeapYear(const unsigned long yr){
     return ( yr%( yr%100 ? 4:400) ? 0 : 1);
}
unsigned long
getYearDay(const unsigned long year) {
     unsigned long lastYear = year-1;
     unsigned long yearNum = lastYear-1899;
     unsigned long walker,counter=0;
     for(walker=SYEAR; walker < year; ++walker) {
         if(isLeapYear(walker)==1)
             ++counter;
     }
     return (365*yearNum+counter+1)%7;
}
void
printYear(const unsigned long y, const unsigned long m) {
     WEEK yDay = getYearDay(y);
     unsigned long vDay = isLeapYear(y);



  • sohu2000000
  • 酱油
    4
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
     unsigned char* monName [13] = {0,
         "January", "February", "Match", "Apirl",
         "May", "June", "July", "August",
         "September","October", "November", "December"
     };
     unsigned long monLen [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;
     unsigned long monWeeks[13];
     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);
     printf("\n-------------------------------------------------\n");
     printf(" %s, %d \n",monName[m],y);
     printf("-------------------------------------------------\n");
     printMonth(monWeeks[m],monLen[m]); printf("\n");
     return;
}
int
main(void){
     int yr, mon , ok;
loop:
     do
     {
         ok=1;
         fflush(stdin);
         printf("\nPlease Enter Year(0 to quit): ");
         scanf("%4d",&yr);
         if(yr ==0)
         {
             return 0;
         }
         if(yr < SYEAR)



登录百度账号

扫二维码下载贴吧客户端

下载贴吧APP
看高清直播、视频!
  • 贴吧页面意见反馈
  • 违规贴吧举报反馈通道
  • 贴吧违规信息处理公示
  • 1回复贴,共1页
<<返回c语言吧
分享到:
©2025 Baidu贴吧协议|隐私政策|吧主制度|意见反馈|网络谣言警示