今天比较无聊,就随便找了个程序设计来做,下面是源代码,以及效果图...不喜请喷! /*题目1:年历显示。功能要求:(1) 输入一个年份,输出是在屏幕上显示该年的日历。假定输入的年份在1940-2040年之间。(2) 输入年月,输出该月的日历。(3) 输入年月日,输出距今天还有多少天,星期几,是否是公历节日。*/
1 //日历 2 // Coder @Gxjun 2014/3/30/10:35 3 #include4 #include 5 #include 6 #include 7 using namespace std; 8 namespace isprimer 9 { 10 int ren[13]={ 0,31,60,91,131,162,192,223,254,284,315,335,366} ; //是闰年 11 int pin[13]={ 0,31,59,90,130,161,191,222,253,283,314,334,365} ; 12 } 13 namespace mon 14 { 15 int ren_month[13]={ 0,31,29,31,30,31,30,31,31,30,31,30,31}; 16 int pin_month[13]={ 0,31,28,31,30,31,30,31,31,30,31,30,31}; 17 } 18 bool isprim(int year) 19 { 20 if(year%400==0||(year%4==0&&year%100!=0)) 21 return true; 22 return false; 23 } 24 void print(int month,int weekly,int tol_day) 25 { 26 27 int k=1; 28 cout.width(3); 29 cout< <<" SUN MON TUE WED THU FRI SAT"< tm_year+=1900; 69 t->tm_mon+=1; 70 cout<<"今天的时间为:"< tm_year<<" 年 "; 71 cout< tm_mon<<" 月 "< tm_mday<<" 日"< tm_year)) //这一天为闰年 77 start=ren[t->tm_mon-1]+t->tm_mday ; 78 else 79 start=pin[t->tm_mon-1]+t->tm_mday ; 80 if(isprim(year)) 81 en=ren[month-1]+day; 82 else 83 en=pin[month-1]+day; 84 int year_cha=year - t->tm_year; 85 int ans=(year_cha/4)*366+(year_cha - year_cha/4)*365+en-start; 86 cout<<"相隔:"< <<" 天"< tm_wday+ans%7< tm_year+=1900; 98 t->tm_mon++; 99 if(isprim(t->tm_year)) //这一天为闰年100 start=ren[t->tm_mon-1]+t->tm_mday ;101 else102 start=pin[t->tm_mon-1]+t->tm_mday ;103 using namespace mon ;104 if(isprim(year))105 en=ren[month-1]+sday;106 else107 en=pin[month-1]+sday;108 int year_cha=year - t->tm_year;109 int ans=(year_cha/4)*366+(year_cha - year_cha/4)*365+en-start;110 //得到本月初一是星期几111 int weekly=t->tm_wday+ans%7;112 if(weekly<0)weekly+=7;113 if(isprim(year))114 print(month,weekly,ren_month[month]);115 else116 print(month,weekly,pin_month[month]);117 };118 void Calender::show3()119 {120 int start,ans;121 using namespace mon;122 time_t k;123 time(&k);124 struct tm *t;125 t=localtime(&k);126 //推出其为星期几即可127 int sday,mon;128 sday=mon=1;129 t->tm_year+=1900;130 t->tm_mon++;131 using namespace isprimer;132 if(isprim(t->tm_year))133 start=ren[t->tm_mon-1]+t->tm_mday;134 else135 start=pin[t->tm_mon-1]+t->tm_mday;136 int year_cha=(year-t->tm_year);137 ans=(year_cha/4)*366+(year_cha - year_cha/4)*365+1-start;138 int weekly=t->tm_wday+ans%7;139 if(weekly<0)weekly+=7;140 if(isprim(year))141 {142 for(int i=1;i<=12 ;i++ )143 print(i,(weekly+ren[i-1])%7,ren_month[i]);144 }145 else146 for(int i=1;i<=12 ;i++ )147 print(i,(weekly+pin[i-1])%7,pin_month[i]);148 149 };150 int main()151 {152 int tem,aa,bb,cc;153 cout<<"你想要查找什么?";154 cout<<"1.某年某月某日距现在的天数以及是星期几?"< >tem;158 switch(tem)159 {160 case 1:161 {162 cout<<"输入年 月 日"< >aa>>bb>>cc;164 Calender stu(aa,bb,cc);165 stu.show1();166 } ;break;167 case 2:168 {169 cout<<"输入年 月"< >aa>>bb;171 Calender tt(aa,bb);172 cout<<"this is "< <<" Calender !"< >aa;180 Calender stu(aa);181 stu.show3();182 }183 }184 return 0;185 }
效果图: