博客
关于我
DevForge学编程社区慕课西北工业大学C++程序设计练习题8 一个日期是该年的第几天
阅读量:539 次
发布时间:2019-03-09

本文共 937 字,大约阅读时间需要 3 分钟。

编程社区慕课西北工业大学C++程序设计练习题8

一个日期是该年的第几天

在这个练习题中,我们需要编写一个C++程序,能够根据输入的年、月、日,计算该日期是该年的第几天。这个题目看起来不难,但需要注意闰年的判断以及对日期的计算逻辑。

代码结构分析

首先,让我们看看这个程序的主要结构:

  • 头文件包含

    • #include <iostream> 用于标准输入输出
    • #include <iomanip> 用于格式化输出
    • #include <cmath> 用于数学运算
    • #include <ctime> 用于处理日期时间
  • 变量定义

    • int a[12] = {31,28,31,30,31,30,31,31,30,31,30,31};
      这个数组保存了每个月的天数,索引从0到11分别对应1月到12月。
  • 函数定义

    • int years(int year):判断输入的年是否是闰年。

      • 如果能被400整除,或者能被4整除但不能被100整除,则是闰年,返回1。
      • 否则返回0。
    • int sum_day(int n, int days):计算某个月的前days天有多少天。

      • 使用循环从0到n-1,累加每个月的天数。
  • 主函数main

    • 读取用户输入,判断年份是否在有效范围内(1000到9999年之间)。
    • 根据用户输入的年、月、日,判断是否为闰年。
    • 根据月份和天数计算总天数,并输出结果。
  • 闪算过程

    让我们模拟一下程序的运行过程:

    假设输入的年份是2024年(闰年),月份是3月,天数是15天。

  • 调用years(2024),返回1(闰年)。
  • 调用sum_day(3, 15),计算3月的前15天:
    • 1月有31天,2月有29天(因为是闰年),3月到第15天是15天。
    • 总天数 = 31 + 29 + 15 = 75天。
  • 输出75。
  • 注意事项

    在编写类似的程序时,需要注意以下几点:

    • 闰年的判断:闰年的规则是“能被4整除但不能被100整除,或者能被400整除”。
    • 边界条件:例如2月是否有29天取决于是否是闰年。
    • 输入验证:确保输入的年、月、日在合理范围内,避免越界错误。

    这个程序的逻辑清晰,代码简洁,适合用于日期计算的场景。如果需要更复杂的日期处理,可以考虑使用标准的日期时间库(如<ctime>)。

    转载地址:http://jqoiz.baihongyu.com/

    你可能感兴趣的文章
    Openlayers高级交互(19/20): 地图上点击某处,列表中显示对应位置
    查看>>
    Openlayers高级交互(2/20):清除所有图层的有效方法
    查看>>
    Openlayers高级交互(20/20):超级数据聚合,页面不再混乱
    查看>>
    Openlayers高级交互(3/20):动态添加 layer 到 layerGroup,并动态删除
    查看>>
    Openlayers高级交互(4/20):手绘多边形,导出KML文件,可以自定义name和style
    查看>>
    Openlayers高级交互(5/20):右键点击,获取该点下多个图层的feature信息
    查看>>
    Openlayers高级交互(6/20):绘制某点,判断它是否在一个电子围栏内
    查看>>
    Openlayers高级交互(7/20):点击某点弹出窗口,自动播放视频
    查看>>
    Openlayers高级交互(8/20):选取feature,平移feature
    查看>>
    Openlayers高级交互(9/20):编辑图形(放缩、平移、变形、旋转),停止编辑
    查看>>
    Openlayers:DMS-DD坐标形式互相转换
    查看>>
    openlayers:圆孔相机根据卫星经度、纬度、高度、半径比例推算绘制地面的拍摄的区域
    查看>>
    OpenLDAP(2.4.3x)服务器搭建及配置说明
    查看>>
    OpenLDAP编译安装及配置
    查看>>
    Openmax IL (二)Android多媒体编解码Component
    查看>>
    OpenMCU(一):STM32F407 FreeRTOS移植
    查看>>
    OpenMCU(三):STM32F103 FreeRTOS移植
    查看>>
    OpenMCU(三):STM32F103 FreeRTOS移植
    查看>>
    OpenMCU(二):GD32E23xx FreeRTOS移植
    查看>>
    OpenMCU(五):STM32F103时钟树初始化分析
    查看>>