输入年月,输出这个月的日历

#include <iostream>
#include <iomanip>

using namespace std;

bool runnian(int a)
{
   if ((a%4 == 0&&a%100!=0)||a%400==0)
      return true;
   else
      return false;
}//判断闰年

void output(int a,int month,int year)
{
   int n = 0,i;
   cout <<"Mon Tue Wed Thu Fir Sat Sun "<<endl;
   for (;a>0;a--)
   {
      cout <<"    ";
      n++;
   }

   switch (month)
   {
   case 1:
   case 3:
   case 5:
   case 7:
   case 8:
   case 10:
   case 12:
      i = 31;
      break;
   case 2:
      {
         if (runnian(year))
            i = 29;

         else
            i = 28;
            break;
      }
   default:
   i = 30;
   }

   for (int g = 1;g<=i;g++)
   {
      cout <<setw(4)<<g;
      n++;
      if (n%7==0)
         cout <<endl;
   }
}//输入本月一月一日的星期数与星期一的差值和年份月份然后输出日历

int main()
{
   //以1700年一月一日为基准,1700年一月一日为星期五
   int year,month,i,n = 0,g,h = 0,m;
   cout <<"please input the year"<<endl;
   cin >>year;
   cout <<"please input the month"<<endl;
   cin >>month;

   for (i = 1700;i<year;i++)
   {
      if (runnian(i))
         n+=1;
   }
   g = (year-1700-n)*365+n*366+4;
   for(h=1;h<month;h++)
   {
      if(h == 2&&runnian(year))
         g+=29;
      else if (h == 1||h == 3||h == 5||h == 7||h == 8||h == 10||h == 12)
         g+=31;
      else if(h == 4||h == 6||h == 9||h == 11)
         g +=30;
         else
            g+=28;


   }
   g%=7;
   output(g,month,year);

}

这个程序以1700年为基准,输入年份时应输入1700年之后的年份。

这样做时因为1580年变更历法,而且1600年之前的儒略历中闰年计算方法与现在不同。

为了方便起见就取了1700年一月一日为基准。

(博主是个小垃圾,这是在学习过程中写的,希望大家可以提提意见)

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值