万年历
说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。
万年历 1、 能够显示公元后任意年份的日历,日历以月份顺序排列,每月以星期顺序排列,类似于一般挂历上的格式。 2、先以2000年1月1日周六作为推算起点来判定实现指定2000年后的日历 3、再将起点日期改为公元元年一月一日是星期几 4、注意判断闰年、月、周的判别 #include #include #include using namespace std; class Date { private: int year; int month; int day; public: Date(int y=1,int m=1,int d=1):year(y),month(m),day(d){} void SetYear(int y){year=y;} bool IsLeapYear(); int GetYearDays(); int GetWeekDay(); void PrintCalendar(); }; bool Date::IsLeapYear() { return((year%4==0&&year%100!=0)||year%400==0); } int Date::GetYearDays() { int MonthDays[13]={0,31,28,31,30,31,30,31,31,30,31,30,31}; if(IsLeapYear()) MonthDays[2]++; int days=day; for(int i=1;i days+=MonthDays[i]; return days; }
int Date::GetWeekDay() { return((year-1+(year-1)/4-(year-1)/100+(year-1)/400+1)%7);
}
void Date::PrintCalendar() { int MonthDays[13]={0,31,28,31,30,31,30,31,31,30,31,30,31}; if(IsLeapYear()) MonthDays[2]++; string MonthName[13]={"error","一月","二月","三月","四月","五月","六月","七月","八月","九月","十月","十一月","十二月"}; string WeekName=" 星期日 星期一 星期二 星期三 星期四 星期五 星期六"; cout<年"< int temp=GetWeekDay(); for(int i=1;i<=12;i++) { cout<<"___________________________________________________"< cout< for(int j=1;j<=temp;j++) cout<<" "; for(int k=1;k<=MonthDays[i];k++) { cout< temp++; if(temp==7) { cout< temp=0; } }
cout<<"\n___________________________________________________\n"< } }
int main() { Date date; int n; cout<<"输入年份:"; cin>>n; date.SetYear(n); date.PrintCalendar(); return 0; }
本文来源:https://www.wddqw.com/doc/b3d172640b1c59eef9c7b401.html