C语言 - 万年历
2019-06-12 23:43
549 查看
[code]#include<iostream> #include<iomanip> using namespace std; int leapyear(int year); //判断该年是否为闰年 int theday(int year,int month); //判断该月天数 int whatdate(int year,int month); //判断该月第一天是星期几 int typeday(int year,int month); //打印该月日历 int main() { int year; cout<<"please type the year you want search:"; cin>>year; for(int month=1;month<=12;month++){ cout<<"\t"<<year<<"年"<<month<<"月月历"<<endl; cout<<"\t"<<"日"<<"\t"<<"一"<<"\t"<<"二"<<"\t"<<"三"<<"\t"<<"四"<<"\t"<<"五"<<"\t"<<"六"<<endl; typeday(year,month); cout<<endl; } system("pause"); return 0; } int leapyear(int year) { int flag1=0; if(year%400==0||year%100!=0&&year%4==0) flag1=1; else flag1=0; return flag1; } int theday(int year,int month) { int days; switch(month) { case 1: case 3: case 5: case 7: case 8: case 10: case 12: days=31;break; case 4: case 6: case 9: case 11: days=30;break; case 2: if(leapyear(year)) days=29; else days=28;break; default :cout<<"error"<<endl;break; } return days; } int whatdate(int year,int month) { int s=0; for(int i=2000;i<year;i++) { if(leapyear(i)) s=s+366; else s=s+365; } for(int j=1;j<month;j++) s=s+theday(year,j); return s%7; } int typeday(int year,int month) { int n=0; for(int g=1;g<=whatdate(year,month);g++) cout<<"\t"; n=n-1; if(n==1) cout<<"\t\t\t\t\t\t\t"; for(int k=1;k<=theday(year,month);k++) { cout<<k<<"\t"; if((n)%7==0) cout<<endl<<"\t";n=n+1; } return 0; }