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,结果如下:
评论