首页 > 其他分享 >2个日期之间相差天数C语言实现。

2个日期之间相差天数C语言实现。

时间:2024-10-10 09:48:40浏览次数:9  
标签:10 01 相差 天数 C语言 润平 2015 2011

2个日期之间相差天数

Description

时光匆匆,日子一天天的过去,一个百岁老人,所活天数也不过36500多天。现在,小明突然想知道自己已经活了几天。

已知小明的出生日期和现在的日期,请你帮助小明计算出他已活的天数。

如,出生日期为2011-10-01,现在是2011-10-27,则已活的天数为26天。

Input

2个日期d1,d2(之间以1个空格间隔,且d2>d1),分别表示小明的出生日期和现在的日期,形式都为yyyy-mm-dd。

保证输入的日期合法,而且在[1000-01-01,9999-12-31]范围内。

Output

输出小明已活的天数。

 

输入样例 1 

2011-10-01 2011-10-27

输出样例 1

26

 

输入样例 2 

2008-02-01 2011-10-27

输出样例 2

1364

 

以下是编程部分:

d93d6352c4f247339ee8a2e352a85f13.png

 浅谈本题数学思维:

      前导:

      我们首先要清楚的知道题目在问什么:两个日期差。

      那么,要求两个日期差我们需要考虑什么?显然有年份的润平,即二月的天数。还要考虑每个月天数的不一致、如何以月和日为单位进行加减运算等等……

      这时,数学思维的重要性便体现出来了。好的思维方式可以提高解题的简洁性和逻辑性。

      以下,是我的思维:

      将年的计算与月、日分开。

      举例:2000-01-24与2015-07-19,舍弃月、日,得到2000与2015,它们相隔2015-2000=15个年份(不包括2015年即2015.01.01--2015.12.31这段时间。),然后只考虑这十五年的润平,然后计算这十五年的总天数。

      接下来处理月,日。对于结果而言,2000.01.01--2000.12.31已经计入总天数,所以2000.01.01--2000.01.24这段时间是多出来的,需要在结果中减去。同理,2015.01.01--2015.07.19这段时间没有计入总天数,所以需要加上这段时间。

      这样,问题就变得简单了。我们只需要考虑一下2000与2015的润平(即当年的二月有几天)就可以得知多出与未计入的天数,再与处理年得到的结果进行加减即可。

要点:

1.自己实现了一个判断润年的函数leap,其返回值为1(真)和0(假)。

2.自己实现了一个处理年份的函数Ydispose,并考虑其润平。

3.自己实现了一个处理月、日的函数,并考虑润平,计算出多余与未计入的天数。并定义了两个一维数组用于获得月份对应的天数。(分别对应润平。)

4.结果在main函数里对d进行简单的加减,便可得知总天数。

 

 

标签:10,01,相差,天数,C语言,润平,2015,2011
From: https://blog.csdn.net/2401_87281716/article/details/142798698

相关文章

  • 基于C语言的排序
    排序的概念:排序:所谓排序,就是使一串记录,按照其中的某个或某些关键字的大小,递增或递减的排列起来的操作。稳定性:假定在待排序的记录序列中,存在多个具有相同的关键字的记录,若经过排序,这些记录的相对次序保持不变,即在原序列中,r[i]=r[j],且r[i]在r[j]之前,而在排序后的序列中,r[i]......
  • 实验2_C语言分支与循环基础应用编程
    实验一#include<stdio.h>#include<stdlib.h>#include<time.h>#defineN5#defineN1397#defineN2476#defineN321intmain(){intcnt;intrandom_major,random_no;srand(time(NULL));cnt=0;while(cnt<N){......
  • 实验2 C语言分支与与循环基础应用编程——1
    一、实验目的1.能正确使用if语句实现分支结构2.能正确使用while语句、do...while语句实现循环结构3.能在具体问题场景中正确区分、使用continue和break4.能灵活、组合使用c语句编程解决简单应用问题 二、实验准备1.分支语句if和循环语句while、do...while的用法......
  • 实验二 C语言分支与循环基础应用编程
    实验二C语言分支与循环基础应用编程实验任务1——抽学号#include<stdio.h>#include<stdlib.h>#include<time.h>#defineN5#defineN1397#defineN2476#defineN321intmain(){ intcnt; intrandom_major,random_no; srand(time(NULL));//以当前系统......
  • C语言结构体
    1.结构体的定义、初始化、打印输出#include<stdio.h>#include<string.h>structStudent{//定义结构......
  • C语言—函数递归
    目录一.递归的概念①递归的思想②递归的限制条件二.递归的一些典型例子①求n的阶乘②顺序打印一个整数的每一位③斐波那契数列三.递归与迭代一.递归的概念①递归的思想所谓递归,就是把一个大型复杂问题不断转化成一个个规模较小的子问题从而求解,直到子问题不能被......
  • C语言练习
    今天继续我们的练习。1.调用printf编写一段程序,显示以下内容天地人分析:1.这次题目非常简单,我们只需要知道printf的使用方法(不知道的同学可以看前面我以往发布过的C语言的知识点),并多次打印就可以实现我们想要的效果。实际代码:#include<stdio.h>//头文件intmain()//主......
  • C语言练习
    接下来一段时间,博主要参加军训没有时间更新C语言知识点,但博主会每天更新一道C语言的题作为分享。1.计算并显示整数的差分析:1.题目并不难,首先我们要知道printf这个库函数,是用来打印数据到屏幕的库函数      2.设置变量,在遵循计算机计算的规则(其实和正常的加减乘除......
  • 刷c语言练习题5(牛客网)
    1、若有定义inta[8];,则以下表达式中不能代表数组元素a[1]的地址的是()A、&a[0]+1B、&a[1]C、&a[0]++D、a+1答案:C解析:C选项中&a[0]是一个地址常量,对地址常量的赋值操作是不合法的,错误。2、 以下函数值的类型是:fun(floatx){floaty;y=3*x-4;returny;}A、i......
  • C语言 实现 unix时间戳转换到自定义 tm结构体
    之前使用ESP32写了一个闹钟,免得我老是把手机闹钟给滑了就不知该起床了原本想用标准库解决的,但是这个时间一直不准,逼得用SNTP获取了步进单位为(second)的时间戳,然后使用GPtimer来维持时间戳才算是把精准计时给解决了废话不多说,直接上代码typedefstruct{intyear;......