| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 423 人关注过本帖
标题:早起无聊没事做,写个年历,大家来品品.有 BUG 的话请指正!
只看楼主 加入收藏
hackrol
Rank: 4
来 自:世界和平组织
等 级:业余侠客
帖 子:62
专家分:267
注 册:2014-9-6
结帖率:0
收藏
 问题点数:0 回复次数:1 
早起无聊没事做,写个年历,大家来品品.有 BUG 的话请指正!
图片附件: 游客没有浏览图片的权限,请 登录注册

图片附件: 游客没有浏览图片的权限,请 登录注册

程序代码:
//画出某一年的年历!
//对比时间为2015年1月1日星期四
//打印某年年历 gcc版 欢迎交流 QQ 87835836 -- Rol
#include <stdio.h>

void make(int year,int data[][6][7],int days[][12]);        //函数声明详细在后面
int findfirst(int year);
int pdyunnian(int year);
void print(int data[][6][7]);

int main(void)
{
    int year,data[12][6][7]={0};
    int days[2][12]={                                    //闰年与非闰年各月份天数表
        {31,28,31,30,31,30,31,31,30,31,30,31},
        {31,29,31,30,31,30,31,31,30,31,30,31}
    };
    printf("请输入要查询年份(>=0)):\n");
    scanf("%d",&year);
    while(year<0)
    {
        printf("请输入>=0的年份:\n");
        scanf("%d",&year);
    }
    make(year,data,days);
    printf("***********%4d年 年历***********\n",year);
    print(data);
    return 0;
}

void make(int year,int data[][6][7],int days[][12])            //填年历
{
    int kong,i,j,k,num,yun;
    kong=findfirst(year);                                    //判断这一年1月1日是星期几
    yun=pdyunnian(year)?1:0;
    for(i=0;i<12;i++)                                        //12个月份
    {
        num=1;
        for(j=0;j<6;j++)                                    //每月最多6星期
        {
            for(k=0;k<7;k++)                                //每周星期
            {
                if(k<kong&&j==0)continue;                    //空出前面
                if(num<=days[yun][i])                        //判断日期是否超过当年当月天数限制
                {
                    data[i][j][k]=num++;
                    kong=k+1;                                //记录下月1号是星期几
                }                
            }
        }
    }
}

int findfirst(int year)                                        //找出这一年1月1日是星期几
{
    int days=0;
    if(year==2015)return 4;                                    //对比时间为2015年1月1日星期四
    else if(year>2015)                                        //如果是2015年以后
    {
        while(year!=2015)
        {
            days+=(pdyunnian(year-1)?366:365);                //计算这年1月1日到2015年1月1日的总天数
            year--;
        }
        switch(days%7)                                        //计算是星期几
        {
            case 0:return 4;
            case 1:return 5;
            case 2:return 6;
            case 3:return 7;
            case 4:return 1;
            case 5:return 2;
            case 6:return 3;
        }
        
    }
    else                                                    //如果是2015年以前
    {        
        while(year!=2015)
        {
            days+=(pdyunnian(year)?366:365);                //计算这年1月1日到2015年1月1日的总天数
            year++;
        }
        switch(days%7)                                        //计算是星期几
        {
            case 0:return 4;
            case 1:return 3;
            case 2:return 2;
            case 3:return 1;
            case 4:return 7;
            case 5:return 6;
            case 6:return 5;
        }        
    }
}

int pdyunnian(int year)                                        //判断是否为闰年
{
    return (year%4==0&&year%100!=0)||(year%400==0)?1:0;
}

void print(int data[][6][7])                                //打印数据
{
    int i,j,k;
    for(i=0;i<12;i++)
    {
        printf("%02d月\nSUN  MON  TUE  WED  THU  FRI  SAT  \n",i+1);
        printf("---------------------------------\n");
        for(j=0;j<6;j++)
        {
            for(k=0;k<7;k++)
            {
                if(data[i][j][k]==0)printf("     ");        //如果数值为0打印5个空格    
                else printf("%3d  ",data[i][j][k]);                
            }
            printf("\n");
        }
        printf("---------------------------------\n");
    }
}
搜索更多相关主题的帖子: include color 
2014-10-22 06:44
cazhxi
Rank: 2
等 级:论坛游民
威 望:1
帖 子:18
专家分:96
注 册:2014-10-12
收藏
得分:0 
不错顶个。。。。。。。。。。自学中,迷茫啊。。看21天学通C语言。。。感觉不适合初学者啊!!!求推荐本好书
2014-10-22 08:53
快速回复:早起无聊没事做,写个年历,大家来品品.有 BUG 的话请指正!
数据加载中...
 
   



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

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