分享 一个大一的时候自己写的 c++ 万年历,挺好玩的

wangping · 2013年11月30日 · 最后由 peter 回复于 2016年07月18日 · 3745 次阅读

效果图:



#include <iostream.h>
void main()
{
    int i,j,t=1,n,year,x=0,l=0;
    cout<<"万年历(输入整数年份):";
    cin>>year;
    if((year%4==0&&year%100!=0)||year%400==0)
    {
        x=1;
        cout<<"是闰年"<<endl;
    }
    else
    {
        cout<<"不是闰年"<<endl;

    }
    for(i=1;i<=year;i++)
    {
        if((year%4==0&&year%100!=0)||year%400==0)
        {
            l++;
        }
    }
    t=(365*(year-1-l)+366*l+1)%7+5;
    if(t>7)
        t=t%7;

    for(i=1;i<13;i++)
    {
        cout<<endl;
        cout<<i<<"月"<<endl;
        cout<<"\t日"<<"\t一"<<"\t二"<<"\t三"<<"\t四"<<"\t五"<<"\t六"<<endl;
        for(int h=1;h<t;h++)
        {
            cout<<"\t";
        }
        n=t;
        if(i==1||i==3||i==5||i==7||i==8||i==10||i==12)
        {

            for(j=1;j<32;j++)
            {   
                if((j+n-1)%7==1)
                {
                    t=2;
                    cout<<"\t"<<j;
                }

                if((j+n-1)%7==2)
                {
                    t=3;
                    cout<<"\t"<<j;
                }
                if((j+n-1)%7==3)
                {
                    t=4;
                    cout<<"\t"<<j;
                }
                if((j+n-1)%7==4)
                {
                    t=5;
                    cout<<"\t"<<j;
                }
                if((j+n-1)%7==5)
                {
                    t=6;
                    cout<<"\t"<<j;
                }
                if((j+n-1)%7==6)
                {
                    t=7;
                    cout<<"\t"<<j;
                }
                if((j+n-1)%7==0)
                {
                    t=1;
                    cout<<"\t"<<j<<endl;
                }

            }

        }
        if(i==2)
        {
            if(x==1)
            {

                for(j=1;j<30;j++)
                {   
                    if((j+n-1)%7==1)
                    {
                    t=2;
                    cout<<"\t"<<j;
                    }

                    if((j+n-1)%7==2)
                    {
                        t=3;
                    cout<<"\t"<<j;
                    }
                    if((j+n-1)%7==3)
                    {
                    t=4;
                    cout<<"\t"<<j;
                    }
                    if((j+n-1)%7==4)
                    {
                    t=5;
                    cout<<"\t"<<j;
                    }
                    if((j+n-1)%7==5)
                    {
                    t=6;
                    cout<<"\t"<<j;
                    }
                    if((j+n-1)%7==6)
                    {
                    t=7;
                    cout<<"\t"<<j;
                    }
                    if((j+n-1)%7==0)
                    {
                    t=1;
                    cout<<"\t"<<j<<endl;
                    }
                }
            }
                else
                {
                    for(j=1;j<29;j++)
                    {   
                    if((j+n-1)%7==1)
                    {
                    t=2;
                    cout<<"\t"<<j;
                    }

                    if((j+n-1)%7==2)
                    {
                        t=3;
                    cout<<"\t"<<j;
                    }
                    if((j+n-1)%7==3)
                    {
                    t=4;
                    cout<<"\t"<<j;
                    }
                    if((j+n-1)%7==4)
                    {
                    t=5;
                    cout<<"\t"<<j;
                    }
                    if((j+n-1)%7==5)
                    {
                    t=6;
                    cout<<"\t"<<j;
                    }
                    if((j+n-1)%7==6)
                    {
                    t=7;
                    cout<<"\t"<<j;
                    }
                    if((j+n-1)%7==0)
                    {
                    t=1;
                    cout<<"\t"<<j<<endl;
                    }
                }

            }

        }
        if(i==4||i==6||i==9||i==11)
        {
            for(j=1;j<31;j++)
            {   
                if((j+n-1)%7==1)
                {
                    t=2;
                    cout<<"\t"<<j;
                }

                if((j+n-1)%7==2)
                {
                    t=3;
                    cout<<"\t"<<j;
                }
                if((j+n-1)%7==3)
                {
                    t=4;
                    cout<<"\t"<<j;
                }
                if((j+n-1)%7==4)
                {
                    t=5;
                    cout<<"\t"<<j;
                }
                if((j+n-1)%7==5)
                {
                    t=6;
                    cout<<"\t"<<j;
                }
                if((j+n-1)%7==6)
                {
                    t=7;
                    cout<<"\t"<<j;
                }
                if((j+n-1)%7==0)
                {
                    t=1;
                    cout<<"\t"<<j<<endl;
                }

            }
        }
    }


}




如果有一个效果图就更好了

会格式化代码么?
匿名 #4 · 2013年12月01日

继续努力 写点更大的程序

代码不排版,看得晕。。。

求排版

… ruby 过来挑战下?

为啥不一样啊

$ cal 123
                                123                               

       January               February                 March       
Su Mo Tu We Th Fr Sa   Su Mo Tu We Th Fr Sa   Su Mo Tu We Th Fr Sa
             1  2  3    1  2  3  4  5  6  7    1  2  3  4  5  6  7
 4  5  6  7  8  9 10    8  9 10 11 12 13 14    8  9 10 11 12 13 14
11 12 13 14 15 16 17   15 16 17 18 19 20 21   15 16 17 18 19 20 21
18 19 20 21 22 23 24   22 23 24 25 26 27 28   22 23 24 25 26 27 28
25 26 27 28 29 30 31                          29 30 31

        April                   May                   June        
Su Mo Tu We Th Fr Sa   Su Mo Tu We Th Fr Sa   Su Mo Tu We Th Fr Sa
          1  2  3  4                   1  2       1  2  3  4  5  6
 5  6  7  8  9 10 11    3  4  5  6  7  8  9    7  8  9 10 11 12 13
12 13 14 15 16 17 18   10 11 12 13 14 15 16   14 15 16 17 18 19 20
19 20 21 22 23 24 25   17 18 19 20 21 22 23   21 22 23 24 25 26 27
26 27 28 29 30         24 25 26 27 28 29 30   28 29 30
                       31
        July                  August                September     
Su Mo Tu We Th Fr Sa   Su Mo Tu We Th Fr Sa   Su Mo Tu We Th Fr Sa
          1  2  3  4                      1          1  2  3  4  5
 5  6  7  8  9 10 11    2  3  4  5  6  7  8    6  7  8  9 10 11 12
12 13 14 15 16 17 18    9 10 11 12 13 14 15   13 14 15 16 17 18 19
19 20 21 22 23 24 25   16 17 18 19 20 21 22   20 21 22 23 24 25 26
26 27 28 29 30 31      23 24 25 26 27 28 29   27 28 29 30
                       30 31
       October               November               December      
Su Mo Tu We Th Fr Sa   Su Mo Tu We Th Fr Sa   Su Mo Tu We Th Fr Sa
             1  2  3    1  2  3  4  5  6  7          1  2  3  4  5
 4  5  6  7  8  9 10    8  9 10 11 12 13 14    6  7  8  9 10 11 12
11 12 13 14 15 16 17   15 16 17 18 19 20 21   13 14 15 16 17 18 19
18 19 20 21 22 23 24   22 23 24 25 26 27 28   20 21 22 23 24 25 26
25 26 27 28 29 30 31   29 30                  27 28 29 30 31


@bhuztez 公园 1 年貌似不一样

@lgn21st 当时没想到这么多,就写着玩的~现在看来,挺蛋疼的

@lgn21st 这上面没支持 c++

@kevinzhow 可以试试~

windows 下面没有 cal 命令

@bhuztez 我的那个公园 0 年第一天应该是周一

#14 楼 @wangping 没有公元 0 年的……

写过一个带农历的

#17 楼 @lululau 看上去挺不错的,源码在 github 吗?

我在网上看到的带农历的,好像就支持一两百年,好像算法很复杂的。

需要 登录 后方可回复, 如果你还没有账号请点击这里 注册