C++生成日历

版权声明:Wechat:chi0707007 微博:奇葩奇葩铁树开花 https://blog.csdn.net/weixin_44986776/article/details/90167846

效果

效果图

代码

#include <iostream>
#include <iomanip>

using namespace std;

bool isLeapYear(int year);
int getTotalNumberOfDays(int year,int month);
int getNumberOfDaysInMonth(int year,int month);
int getStartDay(int year,int month);
void printMonthHead(int year,int month);
void printMonthBody(int year,int month);

int main()
{
    int year,month;
    cout<<"put your year and month so we can give you calendar!"<<endl;
    cin>>year>>month;
    cout<<endl;
    cout<<endl;
    printMonthHead(year,month);
    printMonthBody(year,month);
    cout<<endl;
    cout<<endl;
    return 0;
}

bool isLeapYear(int year){
    if(year%4==0&&year%100!=0 || year%400==0);
    return 1;
}

int getNumberOfDaysInMonth(int year,int month){
    
    if(month==1||month==3||month==5||month==7||month==8||month==10||month==12)
        return 31;
    if(month==4||month==6||month==9||month==11)
        return 30;
    if(month==2)
        return isLeapYear(year)? 29:28;
    return 0; //如果月份不对的话
}


int getTotalNumberOfDays(int year,int month){
    int total=0;
    for(int i=1800;i<year;i++){
        if(isLeapYear(i))
            total = total+ 366;
        else
            total = total+ 365;
    }
    for(int i=1;i<month;i++)
        total = total + getNumberOfDaysInMonth(year,i);
    return total;
}

int getStartDay(int year,int month){
    int TotalDays = getTotalNumberOfDays(year,month);
    int start1800 = 3;
    
    return (start1800 + TotalDays )%7;
}

void printMonthBody(int year,int month){
    int StartDay = getStartDay(year,month);
    int MonthDays = getNumberOfDaysInMonth(year,month);
    for(int i=0;i<=StartDay;i++){
        cout<<"     ";
    }
    int j=StartDay+1;
    for(int i=1;i<= MonthDays;i++){
        cout<<setw(5)<<i;
        j++;
        if(j==7){
            cout<<endl;
            j=0;
        }
    }
}

void printMonthHead(int year,int month){
    string charMonth;
    switch(month){
        case 1:
            charMonth="January";
            break;
        case 2:
            charMonth="February";
            break;
        case 3:
            charMonth="March";
            break;
        case 4:
            charMonth="April";
            break;
        case 5:
            charMonth="May";
            break;
        case 6:
            charMonth="June";
            break;
        case 7:
            charMonth="July";
            break;
        case 8:
            charMonth="August";
            break;
        case 9:
            charMonth="September";
            break;
        case 10:
            charMonth="October";
            break;
        case 11:
            charMonth="November";
            break;
        case 12:
            charMonth="December";
            break;
            
    }
    cout<<"             "<<charMonth<<"  "<<year<<endl;
    cout<<"-------------------------------------"<<endl;
    cout<<"  SUN  MON  TUE  WED  THU  FRI  SAT  "<<endl;
}

猜你喜欢

转载自blog.csdn.net/weixin_44986776/article/details/90167846