被坑于是做出来的万年历

判断年份是否为闰年,然后计算月份有多少天,最后用一个******公式(名字太长记不住了……)确定该月的第一天是周几,最后输出就可以了,代码走起…


#include <iostream>
using namespace std;
bool leap(int);
int days_month(int,int);
int start_weekday(int,int);
int main()
{
    int years,months;
    int m=1;
    cin>>years>>months;
    int start=start_weekday(years,months);
    int days=days_month(years,months);
    cout<<years<<"年"<<months<<"月"<<endl<<"日  一  二  三  四  五  六"<<endl;
    for(int i=0;i<6;i++)
    {
        for(int j=0;j<7;j++)
        {
            if(m<=days)
            {
               if(j<start)
                {
                    cout<<"    ";
                }else
                {
                    if(m<10)
                    {
                        cout<<" "<<m<<"  ";
                    }else
                    {
                        cout<<m<<"  ";
                    }
                    m++;
                    start=0;
                }
                }else{break;}
        }
            cout<<endl;
    }
    return 0;
}
bool leap(int year)
{
    bool leap_return=false;
    if((year%100!=0&&year%4==0)  ||  year%400==0)
    {
        leap_return=true;
    }
    else
    {
        leap_return=false;
    }
    return leap_return;
}
int days_month(int year,int month)
{
    int days_return;
    if(month==2)
    {
        if(leap(year)==true)
        {
            days_return=29;
        }else
        {
            days_return=28;
        }
    }else
    {
        switch(month)
        {
        case 1:
        case 3:
        case 5:
        case 7:
        case 8:
        case 10:
        case 12:
            days_return=31;
            break;
        case 4:
        case 6:
        case 9:
        case 11:
            days_return=30;
            break;
        }
    }
    return days_return;
}
int start_weekday(int year,int month)
{
    //W= (d+2*m+3*(m+1)/5+y+y/4-y/100+y/400+1) mod 7
    int weekday=0;
    const int day=1;
    switch(month)
    {
    case 1:
    case 2:
        --year;
        month+=12;
        break;
    default:
        ;
    }
    weekday=(day+2*month+(3*(month+1))/5+year+year/4-year/100+year/400+1)%7;
    return weekday;
} 

就是代码有点繁琐…运行结果等用电脑的时候再编辑贴图~

图图来了~~

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值