//print calender#include <iostream>#include <iomanip>using namespace std;void printMonth(int year,int month);void printMonthTitle(int year,int month);void printMonthName(int month);void printMonthBody(int year,int month);int getStartDay(int year,int month);int getTotalNumberOfDays(int year,int month);int getNumberOfDaysInMonth(int year,int month);bool isLeapYear(int year);int main(){ cout<<"Enter full year(e.g.,2010):"; int year; cin>>year; cout<<"Enter month in number between 1 and 12:"; int month; cin>>month; printMonth(year,month); cout<<endl; return 0;}void printMonth(int year,int month){ printMonthTitle(year,month); printMonthBody(year,month);}void printMonthTitle(int year,int month){ printMonthName(month); cout<<" "<<year<<endl; cout<<"_____________________________"<<endl; cout<<" Sun Mon Tue Wed Thu Fri Sat"<<endl;}void printMonthName(int month){ switch(month) { case 1: cout<<setw(16)<<"January"; break; case 2: cout<<setw(16)<<"Feruary"; break; case 3: cout<<setw(16)<<"March"; break; case 4: cout<<setw(16)<<"April"; break; case 5: cout<<setw(16)<<"May"; break; case 6: cout<<setw(16)<<"June"; break; case 7: cout<<setw(16)<<"July"; break; case 8: cout<<setw(16)<<"August"; break; case 9: cout<<setw(16)<<"September"; break; case 10: cout<<setw(16)<<"October"; break; case 11: cout<<setw(16)<<"November"; break; case 12: cout<<setw(16)<<"December"; break; }}void printMonthBody(int year,int month){ int startDay=getStartDay(year,month); int numberOfDaysInMonth=getNumberOfDaysInMonth(year,month); for(int i=0;i<startDay;i++) { cout<<" "; } for(int i=1;i<=numberOfDaysInMonth;i++) { cout<<setw(4)<<i; if((i+startDay)%7==0) cout<<endl; }}int getStartDay(int year,int month){ int startDay1800=3; int totalNumberOfDays=getTotalNumberOfDays(year,month); return (totalNumberOfDays+startDay1800)%7;}int getTotalNumberOfDays(int year,int month){ int total=0; for(int i=1800;i<year;i++) if(isLeapYear(i)) total=total+366; else total=total+365; for(int i=1;i<month;i++) total=total+getNumberOfDaysInMonth(year,i); return total;}int getNumberOfDaysInMonth(int year,int month){ if(month==1||month==3||month==5||month==7||month==8||month==10||month==12) return 31; if(month==4||month==6||month==9||month==11) return 30; if(month==2) return isLeapYear(year)?29:28; return 0;}bool isLeapYear(int year){ return year%400==0||(year%4==00&&year%100!=0);}
原文链接: https://www.cnblogs.com/bl4nk/archive/2011/04/21/2023087.html
欢迎关注
微信关注下方公众号,第一时间获取干货硬货;公众号内回复【pdf】免费获取数百本计算机经典书籍
原创文章受到原创版权保护。转载请注明出处:https://www.ccppcoding.com/archives/24347
非原创文章文中已经注明原地址,如有侵权,联系删除
关注公众号【高性能架构探索】,第一时间获取最新文章
转载文章受原作者版权保护。转载请注明原作者出处!