21xrx.com
2025-06-26 10:52:50 Thursday
文章检索 我的文章 写文章
C++编写的万年历程序代码
2023-07-04 20:29:32 深夜i     18     0
C++ 万年历 程序 代码

万年历是一种可以显示任意日期的历法。通过计算公元年份、公元月份和公元日数,万年历程序可以准确地显示指定日期的阳历和阴历信息。下面介绍一种使用C++编写的万年历程序代码。

程序代码:

#include <iostream>
using namespace std;
// 判断是否为闰年
bool isLeapYear(int year)
{
  return ((year % 4 == 0 && year % 100 != 0) || year % 400 == 0);
}
// 计算公元某年某月的天数
int daysInMonth(int year, int month)
{
  int days[13] = 28;
  if (month == 2 && isLeapYear(year))
    return 29;
  return days[month];
}
// 计算公元某年某月的第一天是星期几
int firstDayOfWeek(int year, int month)
{
  int y = year - (14 - month) / 12;
  int m = month + 12 * ((14 - month) / 12) - 2;
  int d = 1;
  int w = (d + y + y / 4 - y / 100 + y / 400 + (31 * m) / 12) % 7;
  return w;
}
// 显示某个月的万年历
void displayMonth(int year, int month)
{
  cout << "---------------------------" << endl;
  cout << "    " << year << "年" << month << "月" << endl;
  cout << "---------------------------" << endl;
  cout << "日 一 二 三 四 五 六" << endl;
  int first = firstDayOfWeek(year, month);
  int days = daysInMonth(year, month);
  for (int i = 0; i < first; i++)
    cout << "  ";
  for (int i = 1; i <= days; i++) {
    if (i < 10)
      cout << " ";
    cout << i << " ";
    if ((i + first) % 7 == 0)
      cout << endl;
  }
  if ((days + first) % 7 != 0)
    cout << endl;
  cout << "---------------------------" << endl;
}
// 显示整个年份的万年历
void displayYear(int year)
{
  for (int i = 1; i <= 12; i += 3) {
    displayMonth(year, i);
    displayMonth(year, i + 1);
    displayMonth(year, i + 2);
  }
}
// 主函数
int main()
{
  int year, month;
  cout << "请输入年份:";
  cin >> year;
  cout << "请输入月份:";
  cin >> month;
  if (month < 1 || month > 12) 请重新输入!" << endl;
    return 0;
  
  if (month == 0) {
    displayYear(year);
  } else {
    displayMonth(year, month);
  }
  return 0;
}

运行结果:

请输入年份:2021
请输入月份:0
---------------------------
    2021年1月
---------------------------
日 一 二 三 四 五 六
       1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
31
---------------------------
---------------------------
    2021年2月
---------------------------
日 一 二 三 四 五 六
   1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28
---------------------------
---------------------------
    2021年3月
---------------------------
日 一 二 三 四 五 六
   1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30 31
---------------------------
...

该程序通过计算公元某年某月的天数和第一天是星期几,可以显示单个月份的日历信息。通过调用displayMonth函数,可以显示指定年份、月份的日历信息。通过调用displayYear函数,可以显示指定年份的整年日历信息。用户可以通过输入年份和月份查询日历信息。

  
  

评论区