C++实现万年历源代码

下面为你详细讲解“C++实现万年历源代码”的完整攻略。

1. 需求分析

万年历是一款常用的日历工具,可以查询指定日期的日历信息。因此,我们需要实现以下几个功能:
1. 输入年份和月份,输出该月的日历
2. 根据当前时间自动输出当月的日历

2. 设计思路

我们可以根据闰年的规律和每月的天数,计算出一个月中每一天是星期几,并将这些天数以矩阵的形式输出。

3. 代码实现

下面为你提供一段C++代码,可以实现一个简单的万年历功能:

#include<iostream>
using namespace std;

int main()
{
    int month, year, daysInMonth;
    int weekDay=0;

    // 获取当前年份和月份
    time_t now = time(0);
    tm *local = localtime(&now);
    month = local->tm_mon + 1;
    year=local->tm_year + 1900;

    // 输入需要查询的年份和月份
    cout<<"Enter month (1-12): ";
    cin>>month;
    cout<<"Enter year (1900-2100): ";
    cin>>year;

    // 计算该月的天数
    switch(month)
    {
        case 1:
            cout<<"January "<<year<<endl;
            daysInMonth=31;
            break;
        case 2:
            cout<<"February "<<year<<endl;
            if((year%4==0 && year%100!=0) || (year%400==0))
                daysInMonth=29;
            else
                daysInMonth=28;
            break;
        case 3:
            cout<<"March "<<year<<endl;
            daysInMonth=31;
            break;
        case 4:
            cout<<"April "<<year<<endl;
            daysInMonth=30;
            break;
        case 5:
            cout<<"May "<<year<<endl;
            daysInMonth=31;
            break;
        case 6:
            cout<<"June "<<year<<endl;
            daysInMonth=30;
            break;
        case 7:
            cout<<"July "<<year<<endl;
            daysInMonth=31;
            break;
        case 8:
            cout<<"August "<<year<<endl;
            daysInMonth=31;
            break;
        case 9:
            cout<<"September "<<year<<endl;
            daysInMonth=30;
            break;
        case 10:
            cout<<"October "<<year<<endl;
            daysInMonth=31;
            break;
        case 11:
            cout<<"November "<<year<<endl;
            daysInMonth=30;
            break;
        case 12:
            cout<<"December "<<year<<endl;
            daysInMonth=31;
            break;
        default:
            cout<<"Invalid month";
            return 0;
    }

    // 计算该月1号是星期几
    tm time_in = { 0, 0, 0, 1, month-1, year - 1900 };
    time_t time_temp = mktime(&time_in);
    tm const *time_out = localtime(&time_temp);    
    weekDay = time_out->tm_wday;

    // 输出日历
    cout<<" Su  Mo  Tu  We  Th  Fr  Sa"<<endl;
    for(int i=0; i<weekDay; i++)
        cout<<"    ";
    for(int i=1; i<=daysInMonth; i++)
    {
        printf("%3d ", i);
        if(++weekDay>6)
        {
            weekDay=0;
            cout<<endl;
        }
    }
    if(weekDay)
        cout<<endl;

    return 0;
}

该程序首先获取当前的年份和月份,然后让用户输入需要查询的年份和月份,并根据闰年的规则计算该月的天数和1号是星期几。最后按星期排列输出该月的日历。

下面是两个示例:

示例1

如果用户输入的是2021年4月,程序会输出以下日历:

 April 2021
 Su  Mo  Tu  We  Th  Fr  Sa
                   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     

示例2

如果用户输入的是2024年2月,程序会输出以下日历:

February 2024
 Su  Mo  Tu  We  Th  Fr  Sa
               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           

4. 总结

本文为你提供了使用C++实现万年历的完整攻略,包括需求分析、设计思路和代码实现。同时,还给出了两个示例以说明该程序的功能。通过学习本文,你可以快速掌握如何使用C++实现万年历的功能,希望对你有所帮助。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:C++实现万年历源代码 - Python技术站

(0)
上一篇 2023年5月24日
下一篇 2023年5月24日

相关文章

  • C++实现比特币系统的源码

    C++实现比特币系统的源码攻略 比特币系统是一个由开源社区共同维护的加密货币系统,其核心在于区块链技术。C++语言被广泛用于比特币系统开发,以下是 C++ 实现比特币系统的源码攻略: 一、搭建开发环境 搭建比特币系统开发环境需要准备以下工具: C++ 编辑器:推荐使用 Visual Studio Code 或者 Sublime Text; Git 工具:用于…

    C 2023年5月23日
    00
  • C语言大作业之图书管理系统的实现详程

    C语言大作业之图书管理系统的实现详程 概述 本文将详细讲解如何使用C语言编写一个简单的图书管理系统。该系统包含管理员和用户两种角色,主要实现以下功能:- 管理员:图书的添加、删除与修改- 用户:图书的查询、借阅、归还 系统设计 本系统由以下几个模块组成: main.c:主程序,实现系统的入口功能。 user.c:用户模块,实现用户相关的功能,如图书查询、借阅…

    C 2023年5月22日
    00
  • 使用typescript+webpack构建一个js库的示例详解

    让我们来讲解一下“使用TypeScript+Webpack构建一个JS库的示例详解”。 环境准备 首先,我们需要准备好环境。具体来说,需要安装以下软件:- Node.js- TypeScript- Visual Studio Code 或者其他编辑器 创建项目 首先,我们需要创建一个新的项目。在终端中执行以下命令,创建一个新的目录并进入该目录: mkdir …

    C 2023年5月23日
    00
  • Qt 中开启线程的多种方式小结

    针对这个话题,我将会为大家提供一个完整的攻略。首先,我们需要明确的是,Qt 中开启线程的方式有多种,每种方式都有其优缺点,下面我将一一进行介绍。 方式一:继承 QThread 类 继承 QThread 类是使用 Qt 开启线程最为常见的方式之一。具体步骤如下: 定义一个继承自 QThread 的线程类,并重写其 run() 方法,在 run() 方法内实现我…

    C 2023年5月22日
    00
  • Octane Render渲染器C4D R17-19汉化破解详细教程(附完整下载)

    Octane Render渲染器C4D R17-19汉化破解详细教程 1. 下载Octane Render插件 Octane Render插件可以在官方网站上免费下载。下载链接:https://home.otoy.com/render/octane-render/ 请根据自己的操作系统和Cinema 4D版本选择下载相应的插件,下载完成后,解压缩文件。 2.…

    C 2023年5月22日
    00
  • TPLINK TLR5408PE-AC一体VPN路由器怎么样? tpr5408pe测评

    TPLINK TLR5408PE-AC一体VPN路由器怎么样? 简介 TPLINK TLR5408PE-AC是一款集成了VPN功能的路由器。它支持IEEE802.11ac无线网络标准,最高可达1300Mbps,同时支持IPv4和IPv6协议,提供了4个Gigabit以太网口和2个USB接口。另外,它还支持PPTP、L2TP、IPSec和SSL VPN等多种安…

    C 2023年5月23日
    00
  • C语言实现航班售票系统 C语言实现航班管理系统

    C语言实现航班售票系统/C语言实现航班管理系统 1. 系统需求分析 从乘客角度: 查询已有航班信息。 按起降时间、出发地、目的地、班次号等筛选符合需求的航班信息。 预定航班票。 取消预定航班票。 查看已预定航班票。 从航空公司角度: 增加、删除、修改航班信息。 航班出发前取消航班。 确认航班售票情况。 2. 功能设计 显示菜单,包括: 登录; 注册; 查询航…

    C 2023年5月30日
    00
  • C++实现车票管理系统

    C++实现车票管理系统 系统功能 该车票管理系统主要实现以下功能: 查询车票信息 购买车票 退票操作 统计车票销售额和余票数操作 设计思路 数据结构 使用结构体来存储车票信息,包括车次、起点站、终点站、发车时间、到达时间、车票价格和车票余量等信息。同时,为了方便对车票信息进行查找、添加和删除等操作,可以使用一个存储车票信息的数组来进行管理。 struct T…

    C 2023年5月22日
    00
合作推广
合作推广
分享本页
返回顶部