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 }