万年历——C++版本

/***************************************************************

File Name: wnl.cpp
Author: 浮生流年
Function List: main() 主函数
Created Time: 2018年01月14日 星期日 19时38分03秒
**************************************************************/

#include <iostream>
using namespace std;

class Calendar
{
public :
    Calendar()//构造函数
    {
        TotalDays = 0;
        MonthDays = 0;
        system("clear");
        printf("欢迎使用!\n\n");
    };

    void Get_time();//获取时间

    void Total_days();//计算总天数

    void Week_days();//计算所查询月份的第一天是星期几

    void Month_days();//计算所查询月份的总天数

    void print();//打印日历

    ~Calendar()//析构函数
    {
        printf("感谢您的使用!\n");
    };
private :
    int Year;
    int Month;
    int TotalDays;
    int WeekDays;
    int MonthDays;
};

void Calendar::Get_time()//获取时间
{
    printf("请输入您要查询的年份和月份\n");
    printf("         年    月\n");
    system("tput cup 3 4");
    scanf("%d", &Year);
    system("tput cup 3 12");
    scanf("%d", &Month);
    printf("\n");
}


void Calendar::Total_days()//计算总天数
{
    int year, month;
    for (year = 1900; year < Year; year++)
    {
        if ((Year % 4 == 0 && Year %100 != 0) || (Year % 400 == 0))
        {
            TotalDays += 366;
        }
        else
        {
            TotalDays += 365;
        }
    }

    for (month = 1; month < Month; month++)
    {
        if (month == 2)
        {
            if ((Year % 4 == 0 && Year %100 != 0) || (Year % 400 == 0))
            {
                month += 29;
            }
            else
            {
                month += 28;
            }
        }
        else
        {
            if (Month == 4 || Month == 6 || Month == 9 || Month == 11)
            {
                month += 30;
            }
            else
            {
                month += 31;
            }
        }
    }
    TotalDays += month;
}

void Calendar::Week_days()//计算所查询月份的第一天是星期几
{
    TotalDays += 1;
    WeekDays = TotalDays % 7;
}

void Calendar::Month_days()//计算所查询月份的总天数
{
    if ((Year % 4 == 0 && Year % 100 != 0) || (Year % 400 == 0))
    {
        MonthDays = 29;
    }
    else 
    {
        if (Month == 4 || Month == 6 || Month == 9 || Month == 11)
        {
            MonthDays = 30;
        }
        else
        {
            MonthDays = 31;
        }
    }
}

void Calendar::print()//打印日历
{
    Total_days();
    Week_days();
    Month_days();
    int i;

    printf(" 日 一 二 三 四 五 六\n");

    for (i = 0; i < WeekDays; i++)
    {
        printf("   ");
    }

    for (i = 1; i < MonthDays; i++)
    {
        if ((WeekDays + i) % 7 == 0)
        {
            printf("%3d\n");
            continue;
        }
        printf("%3d", i);
    }
    printf("\n\n");
}



int main()
{
    int Year, Month;
    Calendar cal;
    cal.Get_time();
    cal.print();

    return 0;
}
#include int main (void) { int year,month,j,i,day1,day2,one1,one2,w; printf("enter a year:"); scanf("%d",&year); printf("\n\n"); printf("---------------------%d---------------------\n\n",year); one1=((year-1)*365+(year-1)/4-(year-1)/100+(year-1)/400+1)%7; for(month=1;month<=12;month+=2) { printf(" ",month,year); printf(" \n",month+1,year); printf("-------------------- --------------------\n"); printf("日 一 二 三 四 五 六 日 一 二 三 四 五 六\n"); switch(month) { case 1: case 3: case 5: case 7: case 8: case 10: case 12: day1=31;break; case 4: case 6: case 9: case 11:day1=30;break; default:if(!(year%4)&&(year0)||!(year%400)) day1=29; else day1=28; } for(j=1;j<=one1;j++) { if(one1==7) break; else printf(" "); } for(i=1;i<=7-one1;i++) printf("%2d ",i); printf(" "); switch(month+1) { case 1: case 3: case 5: case 7: case 8: case 10: case 12: day2=31;break; case 4: case 6: case 9: case 11:day2=30;break; default:if(!(year%4)&&(year0)||!(year%400)) day2=29; else day2=28; } one2=(one1+day1)%7; for(j=1;j<=one2;j++) { if(one2==7) break; if(j!=7) printf(" "); } for(i=1;i<=7-one2;i++) printf("%2d ",i); printf("\n"); for(i=8-one1;i<=14-one1;i++) printf("%2d ",i); printf(" "); for(i=8-one2;i<=14-one2;i++) printf("%2d ",i); printf("\n"); for(i=15-one1;i<=21-one1;i++) printf("%2d ",i); printf(" "); for(i=15-one2;i<=21-one2;i++) printf("%2d ",i); printf("\n"); for(i=22-one1;i<=28-one1;i++) printf("%2d ",i); printf(" "); for(i=22-one2;i<=28-one2;i++) printf("%2d ",i); printf("\n"); for(i=29-one1;i<=35-one1&&i<=day1;i++) printf("%2d ",i); printf(" "); for(w=1;w<=35-day1-one1;w++) printf(" "); for(i=29-one2;i<=35-one2&&i<=day2;i++) printf("%2d ",i); printf("\n"); for(i=36-one1;i<=day1;i++) printf("%2d ",i); for(w=1;w<=35-day1-one1;w++) printf(" "); if(day1==31&&(one1==4||one1==3||one1==2||one1==1||one1==7)) printf(" "); if(day1==30&&(one1==4||one1==3||one1==2||one1==1||one1==7)) printf(" "); for(i=36-one2;i<=day2;i++) printf("%2d ",i); printf("\n-------------------- --------------------\n\n"); printf("\n"); one1=(one2+day2)%7; } printf("---------------------%d---------------------\n",year); getchar(); printf("按任意键退出"); getchar(); return 0; }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

浮生卍流年

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值