// 日历打印.cpp : 定义控制台应用程序的入口点。
//
#include "stdafx.h"
//本程序用于让用户输入一个2000之后的指定的年月,输出该月的日历
#include
using namespace std;
#include
//本函数用于判断该年是否是闰年
bool judge(int year)
{
if((year%4==0&&year%100!=0)||(year%400==0))
return true;
else
return false;
}
//startday是周几开始,0就是周日,6就是周六
//countday是该月的天数
void showMonth(int startDay,int countday)
{
cout<<"日 一 二 三 四 五 六 "< int count=0;
for(int i=0;i {
cout<<" ";
count++;
}
for(int i=1;i<=countday;i++) //本循环用于输出日期
{
cout< count++;
if(count%7==0)
cout< }
}
void main()
{
int year,month;
do
{
cout<<"请输入一个大于等于2000的年";
cin>>year;
}while(year<2000);
do
{
cout<<"请输入一个月(1-12)";
cin>>month;
}while(month<1 || month>12);
int days=0;
for(int i=2000;i {
if(judge(i)==true)
days+=366;
else
days+=365;
}
//得到之前整年经过的天数
int monthDays12[]={31,28,31,30,31,30,31,31,30,31,30,31};
if(judge(year)==true) //当年是闰年
monthDays12[1]=29;
for(int i=0;i {
days+=monthDays12[i]; //把当年之前的整月全部加上去
}
days=days%7;
//因为2000年1月1日是周六,如果求余为0
//说明本月的第一天也是星期六
int stratDay=(days+6)%7;
//得到startDay是周几
showMonth(stratDay,monthDays12[month-1]);
}