| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 470 人关注过本帖
标题:各位大哥 帮忙解释下这个程序[tk01]
只看楼主 加入收藏
sunfurun
Rank: 1
来 自:平顶山工学院
等 级:新手上路
帖 子:1
专家分:0
注 册:2008-8-25
收藏
 问题点数:0 回复次数:1 
各位大哥 帮忙解释下这个程序[tk01]
#include <stdio.h>

int DayOfWeek(int y, int m, int d)
{
    static int t[] = {0, 3, 2, 5, 0, 3, 5, 1, 4, 6, 2, 4};
    y -= m < 3;
    return (y + y/4 - y/100 + y/400 + t[m-1] + d) % 7;
}

int IsLeapYear(int year)
{
    return year % 4 == 0 && (year % 100 != 0 || year % 400 == 0);
}

int DayOfMonth(int y,int m)
{
    if (m==2) return 28 + IsLeapYear(y);
    return 30 + ((m%2)==(m<8));
}

int main()
{
    int y,m,d,w,mc;
    while (scanf("%d %d",&y,&m)==2 && y>=0 && m>0 && m<=12)
    {
        printf(" S  M  T  W  T  F  S\n");
        if (w=DayOfWeek(y,m,1))
        {
            mc=DayOfMonth(y,(m+10)%12+1);
            for (d=mc-w+1;d<=mc;d++)
                printf("%2d ",d);
        }
        mc=DayOfMonth(y,m);
        for (d=1;d<=mc;d++)
            printf("%2d%c",d,(w=(w+1)%7)?' ':'\n');
        if (w) for (d=1;w<7;w++,d++)printf("%2d ",d);
        putchar('\n');
    }
    return 0;
}
  这个的确是短小精悍 但是我看不懂吖
搜索更多相关主题的帖子: TAG 
2008-08-25 10:01
daidongjie
Rank: 1
等 级:新手上路
帖 子:4
专家分:0
注 册:2008-8-25
收藏
得分:0 
这是个算闰年的程序吧...
2008-08-25 15:16
快速回复:各位大哥 帮忙解释下这个程序[tk01]
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.013764 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved