用C++ 输出 某年某月 的日历表(格式201403)

如题,急求~求大神~

// 日历打印.cpp : 定义控制台应用程序的入口点。
//
#include "stdafx.h"

//本程序用于让用户输入一个2000之后的指定的年月,输出该月的日历
#include <iostream>
using namespace std;
#include <iomanip>
//本函数用于判断该年是否是闰年
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<<"日 一 二 三 四 五 六 "<<endl;
 int count=0;
 for(int i=0;i<startDay;i++) //本循环用于输出空格
 {
  cout<<"   ";
  count++;
 }
 for(int i=1;i<=countday;i++) //本循环用于输出日期
 {
  cout<<setw(3)<<i;
  count++;
  if(count%7==0)
   cout<<endl;
 }
}

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<year;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<month-1;i++)
 {
  days+=monthDays12[i]; //把当年之前的整月全部加上去
 }
 days=days%7;
 //因为2000年1月1日是周六,如果求余为0
 //说明本月的第一天也是星期六
 int stratDay=(days+6)%7;
 //得到startDay是周几
 showMonth(stratDay,monthDays12[month-1]);
 

}

温馨提示:答案为网友推荐,仅供参考
相似回答