1 #include <iostream>
2 #include<string>
3 using namespace std;
4
5 int Isleap(int y,int m,int d)//四年一润,百年不润,四百在润。
6 {
7 if(( y%4 == 0) && (y%100 != 0)||(y%400 == 0))
8 return 1;
9 else return 0;
10 }
11
12 int All_day(int m,int d)
13 {
14 int a[12] = {31,28,31,30,31,30,31,31,30,31,30,31};//边定义边赋值。
15 int sum = 0;
16 sum = sum + d;
17 if(Isleap)
18 a[1]=29;
19 while(m>1)
20 {
21 sum = sum + a[m-1];
22 m -= 1;
23 }
24 return sum;
25 }
26 int count_data(int y,int m,int d)
27 {
28 int w;
29 if(m == 1||m == 2)
30 {
31 y = y-1;
32 m = m+12;
33 }
34 w = (d + 2*m + 3 *(m+1) / 5 + y + y/4 - y/100 + y/400 +1)%7;
35 return w;
36 }
37 void Display_week(int w,int y,int m,int d)
38 {
39 string s;
40 switch(w)
41 {
42 case 1: s = "一";
43 break;
44 case 2: s = "二";
45 break;
46 case 3: s = "三";
47 break;
48 case 4: s = "四";
49 break;
50 case 5: s = "五";
51 break;
52 case 6: s = "六";
53 break;
54 case 0: s = "日";
55 break;
56
57 }
58 cout<<"\t今天是:"<<y<<"年"<<m<<"月"<<d<<"日"<<"星期"<<s<<endl;
59 }
60 void Display_month(int y,int m)
61 {
62 int w,i;
63 int a[12] = {31,28,31,30,31,30,31,31,30,31,30,31};
64 if(Isleap)
65 a[1]=29;
66 w = count_data(y,m,1);
67 cout<<"Sum"<<"\tMon"<<"\tTue"<<"\tWed"<<"\tThu"<<"\tFri"<<"\tSat"<<endl;
68 for(i=1;i<=w;i++)
69 {
70 cout<<"\t";
71 }
72 for(i=1;i<=a[m-1];i++)
73 {
74 cout<<i<<"\t";
75 if((w+i)%7==0)
76 cout<<"\n";
77 }
78 cout<<endl;
79 }
80 int main()
81 {
82 int y,m,d,w;
83 cout<<"请输入年、月、日:"<<endl;
84 while(1)
85 {
86 cin>>y>>m>>d;
87 if(y<0||m<0||d<0||m>12||d>31)
88 {
89 cout<<"请重新输入:"<<endl;
90 continue;
91 }
92 else
93 break;
94 }
95 if (Isleap(y,m,d))
96 cout<<"是闰年"<<endl;
97 else
98 cout<<"不是闰年"<<endl;
99 All_day(m,d);
100 cout<<y<<"-"<<"1-1"<<"到"<<y<<'-'<<m<<"-"<<d<<"一共"<<All_day(m,d)<<"天"<<endl;
101 w = count_data(y,m,d);//算出星期几
102 Display_week(w,y,m,d);//打印年月日
103 Display_month(y,m);//打印日历
104 return 0;
105 }