| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1007 人关注过本帖, 1 人收藏
标题:看到好多人都在问万年历,我就完整的写了一个
取消只看楼主 加入收藏
zisefengye
Rank: 5Rank: 5
等 级:职业侠客
帖 子:167
专家分:386
注 册:2010-6-27
结帖率:100%
收藏(1)
 问题点数:0 回复次数:0 
看到好多人都在问万年历,我就完整的写了一个
鉴于多数人都在问万年历的问题。我就索性写了一个,给大家参考。方法都已封装好,直接调用display(int year)就可以了。如果大家有更好的方案,可以提出。假如我能想到更好的方法,我会直接修改,供大家学习。
int day[] = {31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};
int first_day = 0;
int add_value;
char *week[7] = {"周日", "周一","周二","周三","周四","周五","周六"};


//计算输入年份是否为闰年
bool isLeap(int year)
{
    return ((year % 400 == 0) || (year % 100 != 0 && year % 4 == 0));
}

//计算输入年份第一天是星期几
void Init(int year)
{
    add_value = isLeap(year);
    day[1] = 28 + add_value;//如果输入年为闰年,2月份的天数为29
    first_day = (year + (year - 1) / 4 - (year - 1) / 100 + (year - 1) / 400) % 7;//计算出输入年第一天为周几
}

//计算到输入年份的当前月的距离
int get_distance(int month)
{
    int distance[12] = {0, 31, 59 + add_value, 90 + add_value, 120 + add_value,
                        151 + add_value, 181 + add_value, 212 + add_value,
                        243 + add_value, 273 + add_value, 304 + add_value, 334 + add_value};
    return distance[month - 1];
}

void display(int year)
{
    Init(year);
    printf("         %d年年历       \n",year);
    printf("  周日  周一  周二  周三  周四  周五  周六  \n");
    for(int i = 1; i <= 12; i++)
    {   
        printf("                %d月份        \n", i);
        for(int j = 0; j < first_day; j++)
        {
            printf("      ");
        }
        for(int start = 1; start <= day[i - 1]; start++)
        {
            printf("%6d", start);
            first_day++;
            if(first_day == 7)
            {
                first_day = 0;
                printf("\n");
            }
        }
        printf("\n");
    }
}
搜索更多相关主题的帖子: 万年历 
2010-07-19 20:26
快速回复:看到好多人都在问万年历,我就完整的写了一个
数据加载中...
 
   



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

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