牛客网刷题—— 计算日期到天数转换

简介: 牛客网刷题—— 计算日期到天数转换

一、描述

根据输入的日期,计算是这一年的第几天。

保证年份为4位数且日期合法。

进阶:时间复杂度:O(n)\O(n) ,空间复杂度:O(1)\O(1)

输入描述:

输入一行,每行空格分割,分别是年,月,日

输出描述:

输出是这一年的第几天


fb8e4fbdeef54a44a7556a5fb91defe5.png


二、思路:

这道题简单解法其实将每个月的天数枚举出来,然后根据当前月份向前累加满月的天数,然后再加上当前月所在的天数。最终考虑平闰年的 2 月份区别是否增加一天。 其中需要注意的是平年和闰年的判断,而且是闰年的月份大于 2 的时候,也就是 2 月走完,总天数才能加 1 (比如 2000年2月18日 ,虽然是闰年,但是 2月 都没走完那是不能加上闰年多出的一天的)。


三、代码实现

执行代码如下:

#include <stdio.h>
int main()
{
    int year,month,day,sum,ret;
    int arr[12]={0,31,28,31,30,31,30,31,31,30,31,30,31};
    while((scanf("%d%d%d",&year,&month,&day))!=EOF)
    {
          sum=day;//先将本月天数加上
        if (is_leap_year(year) && month > 2) 
        { 
        sum += 1;
        }
        for(int i=0;i<month;i++)
        {
            sum+=arr[i];//将所有月份累加
        }
         printf("%d",sum);
    }
}
int is_leap_year(int y)//判断是否闰年
{
    if (y % 4 == 0 && y % 100 != 0 || y % 400 == 0)
    {
    return 1;
    }
    return 0;
}
相关文章
|
1月前
蓝桥杯真题time模块详解 | 顺子日期 星期一
蓝桥杯真题time模块详解 | 顺子日期 星期一
|
5月前
|
存储 C语言
【C语言刷题每日一题#牛客网HJ73】——计算日期到天数转换(给定日期,计算是该年的第几天)
【C语言刷题每日一题#牛客网HJ73】——计算日期到天数转换(给定日期,计算是该年的第几天)
AcWing 3498. 日期差值(每日一题)
AcWing 3498. 日期差值(每日一题)
|
6月前
题目----计算某年某月的天数
题目----计算某年某月的天数
40 0
|
6月前
|
索引
每日一题吼吼吼(打印从1到最大n位数,计算是第几天)
每日一题吼吼吼(打印从1到最大n位数,计算是第几天)
36 0
|
6月前
|
C语言
c语言编程练习题:7-19 计算天数
本题要求编写程序计算某年某月某日是该年中的第几天。
60 1
|
6月前
|
Linux C++ iOS开发
C++类相关oj题目分享(计算日期到天数转换、日期差值、打印日期、日期累加)
C++类相关oj题目分享(计算日期到天数转换、日期差值、打印日期、日期累加)
97 0
|
C语言
C语言每日一题 ----计算日期到天数转换(Day 2)
C语言每日一题 ----计算日期到天数转换(Day 2)
132 0
华为机试HJ73:计算日期到天数转换
华为机试HJ73:计算日期到天数转换
OJ题库:计算日期到天数转换、打印从1到最大的n位数 、尼科彻斯定理
OJ题库:计算日期到天数转换、打印从1到最大的n位数 、尼科彻斯定理
59 0