源碼下載鏈接:https://download.csdn.net/download/mr_xuf/10423884
#include <iostream>
#include <iomanip>
using namespace std;
class Calendar
{
private:
int weekday;
int year;
public:
Calendar(int y);//構造函數(對私有變量進行初始化)
void print_monthdays();//打印日期
void print_title(int m);//打印日曆表頭(日一二三四五六)
int monthdays(int n);//判斷每個月的天數
};
Calendar::Calendar(int y)
{
year = y;
weekday = (35+y+y/4-y/100+y/400)%7; //每年的1.1爲星期幾如2018年 weekday = 1
}
void Calendar::print_monthdays()
{
int days;
for(int n=1;n<13;n++)
{
print_title(n);//打印n月和表頭
for(int i=0;i<weekday;i++)
cout <<setw(4)<<" ";//每個月的1號對齊它的星期
days = monthdays(n);//返回月份天數
for(int i=1;i<=days;i++)
{
cout <<setw(4)<<i;//設置輸出的位寬
weekday = (weekday+1)%7;
if(weekday==0)
cout <<endl;
}
cout <<endl<<"____________________________"<<endl;//每個月之間隔一空行
}
}
void Calendar::print_title(int m)
{
cout <<endl;
cout<<" "<<m <<"月" <<endl;
cout<<"----------------------------"<<endl;
cout<<" 日 一 二 三 四 五 六"<<endl;
cout<<"----------------------------"<<endl;
}
int Calendar::monthdays(int n)
{
switch(n)
{
case 1:
case 3:
case 5:
case 7:
case 8:
case 10:
case 12:
return 31;
case 4:
case 6:
case 9:
case 11:
return 30;
case 2:
{
if((year%4==0&&year%100!=0)||(year%400==0)) //判斷是否閏年
return 29;//閏年
else
return 28;//平年
}
default: return 0;
}
}
int main(void)
{
int year;
cout <<"請輸入你要查看的年份:";
cin >>year;
Calendar A(year);
cout <<endl<<year<<"年全年日曆如下"<<endl;
A.print_monthdays();
cout <<endl;
return 0;
}
上述程序的運行結果如下