| 编程中国 | 业界新闻 | 技术文章 | 视频教程 | 下载频道 | 程序源码 | 个人空间 | 编程论坛
全能ASP/PHP/ASP.NET主机,支持月付专业 MSSQL 数据库空间,支持月付专业 MySQL 数据库空间,支持月付买域名,送MP3、MP4
高端软件开发 = 年薪十万不是梦赛孚耐:软件保护加密专家身份认证令牌USB KEY买空间,免费送域名(厦门中资源)
共有 125 人关注过本帖
标题:各位大哥 帮忙解释下这个程序[tk01]
收藏  订阅  推荐  打印 
sunfurun
Rank: 1
来自:平顶山工学院
等级:新手上路
帖子:1
积分:110
注册:2008-8-25
各位大哥 帮忙解释下这个程序[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-8-25 10:01
daidongjie
Rank: 1
等级:新手上路
帖子:4
积分:146
注册:2008-8-25

这是个算闰年的程序吧...
2008-8-25 15:16
关于我们 | 广告合作 | 编程中国 | 清除Cookies | Archiver | WAP | TOP

编程中国 版权所有,并保留所有权利。鲁ICP备08000592号
Powered by Discuz, Processed in 0.056195 second(s), 9 queries.
Copyright©2004-2008, BCCN.NET, All Rights Reserved