21xrx.com
2024-11-10 00:58:08 Sunday
登录
文章检索 我的文章 写文章
C++编写的万年历程序代码
2023-07-04 20:29:32 深夜i     --     --
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函数,可以显示指定年份的整年日历信息。用户可以通过输入年份和月份查询日历信息。

  
  

评论区

{{item['qq_nickname']}}
()
回复
回复