万年历查询

#include <iostream>
#include <algorithm>
#include <iomanip>
using namespace std;
int a[12]={31,28,31,30,31,30,31,31,30,31,30,31};
void year()
{
    int y;
    int dd;
    cout<<endl<<"输入年份:";
    cin>>y;
    if((y%4==0&&y%100!=0)||(y%400==0))
    {
        a[1]=29;
    }
    else
    {
        a[1]=28;
    }
    int s=1;
    for(int i=1980;i<y;i++)
    {
        if((i%4==0&&i%100!=0)||(i%400==0))
        {
            s+=366;
        }
        else
            s+=365;
    }
    for(int i=0;i<12;i++)
    {
        cout<<i+1<<"月的年历如下:"<<endl;
        cout<<"    "<<"日  一  二  三  四  五  六"<<endl;
        int kk=(s%7+1)*4+2;
        if(s%7<6)
        for(int i=0;i<kk;i++)
        {
            cout<<' ';
        }
        for(int j=1;j<=a[i];j++)
        {
            s++;
            dd=s%7;
            switch(dd)
            {
                 case(0):cout<<setw(6)<<j;break;
                 case(1):cout<<setw(4)<<j;break;
                 case(2):cout<<setw(4)<<j;break;
                 case(3):cout<<setw(4)<<j;break;
                 case(4):cout<<setw(4)<<j;break;
                 case(5):cout<<setw(4)<<j;break;
                 case(6):cout<<setw(4)<<j<<endl;break;
            }
        }
        cout<<endl;
    }

}
void yue()
{
    int yy=0;
    cout<<"输入年份以及此年的元旦是星期几用(0-6)表示:";
    int d,d1;
    cin>>d>>d1;
    cout<<"输入此年月份(1-12)";
    int e;
    cin>>e;
    int m=d1;
    d1-=1;
    if((d%4==0&&d%100!=0)||(d%400==0))
    {
        a[1]=29;
    }
    else
    {
        a[1]=28;
    }
    for(int i=0;i<e-1;i++)
    {
        d1+=a[i];
    }
    cout<<"    "<<"日  一  二  三  四  五  六"<<endl;
    cout<<"         "<<d<<'.';
    for(int i=0;i<e-1;i++)
    {
        m+=a[i];
    }m=m%7;
    cout<<e<<".1"<<"星期";
    switch(m)
    {
        case(0):cout<<"日";break;
        case(1):cout<<"一";break;
        case(2):cout<<"二";break;
        case(3):cout<<"三";break;
        case(4):cout<<"四";break;
        case(5):cout<<"五";break;
        case(6):cout<<"六";break;
    }
    cout<<endl;
    cout<<"--------------------------------"<<endl;
    int bb=(d1%7+1)*4+2;
    if(d1%7<6&&d1>=0)
    for(int i=0;i<bb;i++)
    {
        cout<<' ';
    }
    for(int j=1;j<=a[e-1];j++)
    {
        d1++;
        yy=d1%7;
        switch(yy)
        {
            case(0):cout<<setw(6)<<j;break;
            case(1):cout<<setw(4)<<j;break;
            case(2):cout<<setw(4)<<j;break;
            case(3):cout<<setw(4)<<j;break;
            case(4):cout<<setw(4)<<j;break;
            case(5):cout<<setw(4)<<j;break;
            case(6):cout<<setw(4)<<j<<endl;break;
        }
    }
    if(yy!=6)cout<<endl;
    cout<<"--------------------------------"<<endl;
}
void ji()
{
    cout<<endl<<"输入年份:";
    int nian;
    cin>>nian;
    cout<<endl<<"输入月份(1-12):";
    int uu;
    cin>>uu;
    cout<<endl<<"输入此年此月相应的日期(1-28:29:30:31):";
    int ri;
    cin>>ri;
    int ll=1;
    if((nian%4==0&&nian%100!=0)||(nian%400==0))
    {
        a[1]=29;
    }
    else
    {
        a[1]=28;
    }
    for(int i=1980;i<nian;i++)
    {
        if((i%4==0&&i%100!=0)||(i%400==0))
        {
            ll+=366;
        }
        else
            ll+=365;
    }
    for(int i=0;i<uu-1;i++)
    {
        ll+=a[i];
    }
    ll+=ri;
    cout<<endl<<"该天是:星期";
    switch(ll%7)
    {
        case(0):cout<<"日";break;
        case(1):cout<<"一";break;
        case(2):cout<<"二";break;
        case(3):cout<<"三";break;
        case(4):cout<<"四";break;
        case(5):cout<<"五";break;
        case(6):cout<<"六";break;
    }
    cout<<endl;
}
int main()
{
    cout<<setw(35)<<"_____________________________"<<endl;
    cout<<setw(35)<<"*                           *"<<endl;
    cout<<setw(35)<<"  欢迎进入万年历查询系统;    "<<endl;
    cout<<setw(35)<<"*                           *"<<endl;
    cout<<setw(35)<<"_____________________________"<<endl;
    cout<<endl;
    cout<<"请选择您的查询内容:"<<endl<<endl;
    cout<<"                   1.显示一年的日历;"<<endl;
    cout<<"                   2.显示一月的日历;"<<endl;
    cout<<"                   3.显示某一天是星期几;"<<endl;
    cout<<"                   0.退出;"<<endl;
    cout<<"请选择按键(0-3): ";
    int n;
    cin>>n;
    if(n==1)
    year();
    else if(n==2)
    {
        yue();
    }
    else if(n==0)
    {
        return 0;
    }
    else if(n==3)
    {
        ji();
    }
    return 0;
}

 

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值