somehow

c++打印日历

一个简单的用c++实现的打印日历的程序。

#include <iostream>

#include <cmath>

using namespace std;

int bb(int year,int month)

{

switch(month)

{

case 1:case 3:case 5:case 7:case 8:case 10:case 12:return 31;

case 2:

if((year%4==0&&year%100!=0)||(year%400==0))

return 29;

else

return  28;

default:return 30;

}

}

int aa(int year,int month,int day)

{

int day_lastyear=((year-1)*365+(year-1)/4-(year-1)/100+(year-1)/400)%7;//公式1

int day_1=day;

switch(month)

{

case 12:day_1+=30;

case 11:day_1+=31;

case 10:day_1+=30;

case 9:day_1+=31;

case 8:day_1+=31;

case 7:day_1+=30;

case 6:day_1+=31;

case 5:day_1+=30;

case 4:day_1+=31;

case 3:day_1+=28;

case 2:day_1+=31;

case 1:

default:break;

}

if((year%4==0&&year%100!=0)||(year%400==0)&&month>2)

day_1++;

int num=(day_1+day_lastyear)%7;

return num;

}

void print(int year)

{

int i,j;

for(j=1;j<=12;j++)

{

cout<<"\t\t\t"<<year<<"-"<<j<<endl;

cout<<"Sunday Monday Thesday Wednesday Thursday Friday Saturday"<<endl;

for(i=0;i<aa(year,j,1);i++)

cout<<"\t";

for(i=1;i<=bb(year,j);i++)

{

if(aa(year,j,i)!=6)

cout<<i<<"\t";

else

cout<<i<<endl;

}

cout<<endl;

}

}

int main()

{

int year;

cin>>year;

print(year);

return 0;

}

思路是一次计算每天对应的是星期几,再打印下。

备注:要确定某日期是星期几,先要确定之前一年的12月31日是星期几,可用公式1(代码中标注),改公式返回[0,6]之间的整数,分别代表星期天到星期六。

输入2015,结果如下:c++打印日历 - somehow - somehow的博客

评论