21xrx.com
2024-12-22 22:39:48 Sunday
登录
文章检索 我的文章 写文章
C++代码:输出指定年的日历
2023-06-27 00:28:21 深夜i     --     --
C++ 输出 指定年 日历

C++是一种强大的编程语言,可以用来编写各种程序,包括日历生成程序。日历生成程序可以帮助我们快速地查看指定年的日历。接下来,我们将介绍一个使用C++编写的日历生成程序。

首先,我们需要明确程序的输入与输出。输入应该是一个整数型变量,代表需要生成的年份,输出应该是一个月历表格,显示该年每个月的日期和星期数。根据这个要求,我们先定义一个整型变量year,用于存储用户输入的年份,代码如下:


int year;

cout << "请输入需要生成的年份:" << endl;

cin >> year;

接下来,我们需要计算指定年份的每个月的日期和星期数。为了方便计算,我们可以借助C++中的ctime库和tm结构体来获取当前时间信息,并进一步计算出指定年份每个月的日期和星期数,代码如下:


#include <iostream>

#include <ctime>

using namespace std;

int main()

{

  int year;

  cout << "请输入需要生成的年份:" << endl;

  cin >> year;

  

  //获取每个月的日期和星期数

  struct tm *timeptr;

  time_t time = time(NULL);

  timeptr = localtime(&time);

  timeptr->tm_year = year - 1900;

  timeptr->tm_mday = 1;

  for (int month = 1; month <= 12; month++)

  {

    timeptr->tm_mon = month - 1;

    mktime(timeptr);

    //输出表头

    cout << "   " << year << "年" << month << "月" << endl;

    cout << "日 一 二 三 四 五 六" << endl;

    //计算该月第一天是星期几

    int weekday = timeptr->tm_wday;

    //计算该月的天数

    int days = 31;

    if (month == 4 || month == 6 || month == 9 || month == 11)

      days = 30;

    else if (month == 2)

      days = 28 + ((year%4 == 0 && year%100 != 0) || (year%400 == 0));

    //输出日期和星期数

    for (int i = 0; i < weekday; i++)

      cout << "  ";

    for (int i = 1; i <= days; i++)

    {

      printf("%2d ", i);

      if ((i + weekday) % 7 == 0)

        cout << endl;

    }

    cout << endl;

  }

  return 0;

}

代码中使用for循环遍历12个月份,计算并输出每个月的日期和星期数。在计算日期和星期数时,我们使用了mktime函数将日期存储进tm结构体中,使用strftime函数将日期格式化输出。同时,根据每个月的天数和第一天是星期几,我们使用for循环输出了日期和星期数。

运行程序后,用户输入指定年份后,即可看到该年份的日历表格。通过这个实例,我们可以看到,C++编写程序的过程中,对时间结构体的开发者友好性工具带来了很大的帮助,同时也展现了C++的强大功能。

  
  

评论区

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