// 万年历.cpp : 定义控制台应用程序的入口点。
/*
*@author 紫魄
*@date 20101210
*@version 1.0.0
*@environment windows 7 Visual Studio 2010
*/

#include "stdafx.h"
#include
#include
using namespace std;

int count = 0;
int year_input=0,month_input=0;
int year=0, month=0;
int month_day=0;
int static days=0;
int n=0;
int day_month[]={31,29,31,30,31,30,31,31,30,31,30,31};

//声明三个函数,分别用来处理年份,月份
void doMonth(int year,int month);
int  doDay( int days);
//声明函数,用来处理判断数据及最后显示
void printItem();
//程序运行开始的输入输出函数,用于存储数据

 

void print()
{
 
 int num=1;
 while(num){
 cout<<"请输入年份 ";
 cin>>year_input;
 cout<<"请输入月份 ";
 cin>>month_input;
 if (year_input<0||month_input<0||month_input>12){
  cout<<"输入有误,重新输入"<   num = 0;
  break;
 }
 doMonth(year_input,month_input);
 printItem();
 num = 0;
 cin.sync();
 fflush(stdin);
 } 
}

bool isLeapYear( int year)
{
 if(year%4==0&&year%100!=0||year%400==0)
 {
  return true;
 }
 else
  return false;
}

//判断该月第一天过了多少天
void doMonth(int year,int month)
{
 if(isLeapYear(year)){
 day_month[1]=29;
 }
 else
 day_month[1]=28;
 if (month ==1)
 {
  month_day = 1;
 }else{
  while(month>=0)
  {
   month_day += day_month[month-2];
   month--;
  }
  month_day += 1;
  //cout<  }
 for(int i = 0;i  {
  if(i%4==0&&i%100!=0||i%400==0)
  {
   count++;
  }
 }
 days = year*365 + count;
 days += month_day;
 //cout<  //cout<  doDay(days);
}

int  doDay( int days)
{
 n=(days-2) % 7;
 //cout<<" n is "<  return n;
}
//定义用于打印万年历界面的函数
void printItem()
{
 char *s="   ";
 int g=0;
 cout<<"SUN "<<"MON "<<"TUE "<<"WED "<<"THU "<<"FRI "<<"SAT "<  for (int i=0;i  {
  cout<<"    ";
  g++;
  //cout<<"g="<

 }
  for(int j = 1;j<=day_month[month_input-1];j++)
 {
  cout<   //cout<<"m="<   if((j+g) % 7 ==0)
  {
   cout<   }
   if(j>8){
   s="  ";   //如果日历数字大于9,即为两位数字时将空格数改为3
 
  }
 }
  cout<   fflush(stdin);
  month_day = 0;
  days = 0;
  count = 0;
  //将数据清空

}

//主函数开始
int _tmain(int argc, _TCHAR* argv[])
{
 char a='y';
 while(a!='n')
 {
 print();
 cout<<"是否继续,否请按n"<  cin>>a;
 fflush(stdin);
 }
 return 0;
}