题目描述 

Gardon的18岁生日就要到了,他当然很开心,可是他突然想到一个问题,是不是每个人从出生开始,到达18岁生日时所经过的天数都是一样的呢?似乎并不全都是这样,所以他想请你帮忙计算一下他和他的几个朋友从出生到达18岁生日所经过的总天数,让他好来比较一下。

Input

一个数T,后面T行每行有一个日期,格式是YYYY-MM-DD。如我的生日是1988-03-07。

Output

T行,每行一个数,表示此人从出生到18岁生日所经过的天数。如果这个人没有18岁生日,就输出-1。

Sample Input

1
1988-03-07

Sample Output

6574

解题思路 

首先判断是出生在三月前还是三月后,若是三月后则从下一年开始判断,判断是否闰年,闰年的话加上366天,否则加上365天。若是三月前则从今年开始判断。判断18次。出生在三月前的话判断是否为2月29,若是在2月29出生,则判断18年后是否为闰年,若18年后不是闰年,则没有18岁生日,输出-1.

 代码

#include<stdio.h>
#include<string.h>
#include<ctype.h>int main()
{int n,i,j,year,month,day,sum;char s[15];scanf("%d",&n);getchar();for(i=0;i<n;i++){sum=0;gets(s);sscanf(s,"%4d",&year);sscanf(s+5,"%2d",&month);sscanf(s+8,"%2d",&day);if(month>=3){for(j=year+1;j<=year+18;j++){if((j%4==0&&j%100!=0)||j%400==0){sum+=366;}else{sum+=365;}}printf("%d\n",sum);}else{if(month==2&&day==29){if(((year+18)%4==0&&(year+18)%100!=0)||((year+18)%400==0)){for(j=year;j<year+18;j++){if((j%4==0&&j%100!=0)||j%400==0){sum+=366;}else{sum+=365;}}        }else{printf("-1\n");}}else{for(j=year;j<year+18;j++){if((j%4==0&&j%100!=0)||j%400==0){sum+=366;}else{sum+=365;}}printf("%d\n",sum);}}  }   return 0;
}

18岁生日(闰年问题)相关推荐

  1. HDU1201 18岁生日【日期计算】

    18岁生日 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) Total Subm ...

  2. HDU1201 18岁生日【日期计算+水题】

    18岁生日 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) Total Subm ...

  3. 计算到达18岁生日所经过的总天数

    Problem Description Gardon的18岁生日就要到了,他当然很开心,可是他突然想到一个问题,是不是每个人从出生开始,到达18岁生日时所经过的天数都是一样的呢?似乎并不全都是这样,所 ...

  4. hdu1201 18岁生日(java版本)

    每日一看 18岁生日 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) Total Su ...

  5. HD1201 18岁生日

    18岁生日                                     Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65 ...

  6. HDU - 1201 - 18岁生日 - [局部分离思想]

    HDU - 1201 - 18岁生日 https://vjudge.net/problem/HD... 一句话题意:给定出生日期(格式为1988-03-07),求到18岁生日为止经历了多少天:没有18 ...

  7. 字节跳动笔试题(一)——18岁生日问题

    前言 之前于6月30日,在下参加了字节跳动游戏研发岗的笔试. 做的一般般,很多题目也都忘了,不过好在对四道编程题还记得比较清楚,这里做一个简单的记录. 18岁生日问题 这道题的大意是给定一个人的出生日 ...

  8. 18岁生日所经过的总天数

    Problem Description Gardon的18岁生日就要到了,他当然很开心,可是他突然想到一个问题,是不是每个人从出生开始,到达18岁生日时所经过的天数都是一样的呢?似乎并不全都是这样,所 ...

  9. HDU-1201,18岁生日

    Problem Description: Gardon的18岁生日就要到了,他当然很开心,可是他突然想到一个问题,是不是每个人从出生开始,到达18岁生日时所经过的天数都是一样的呢?似乎并不全都是这样, ...

最新文章

  1. Java 实例化的理解
  2. CNN的一些可视化方法!
  3. ??征集Sql Server2005设置Windows集成认证资料
  4. GMM-HMM语音识别模型 原理篇
  5. HighCharts点击柱形或饼块等加URL或Click事件
  6. AC自动机(写的很乱,仅记录留作自己复习)
  7. php 自动创建目录
  8. tensorflow图形识别_手把手教你使用TF服务将TensorFlow模型部署到生产环境
  9. Linux命令完全指南route,Linux命令--route
  10. 直播:CSDN 联合腾讯安全上线公开课,分享云原生安全技术理解和应用实践
  11. 又是一年双11,神棍节终于来啦
  12. 修改hexo的主题nexT中的Pisces主题宽度
  13. 快速给图片加水印的方法
  14. Streamset数据同步报错问题
  15. java 汉字笔画_java如何获取笔画
  16. linux 压缩固定大小,tar gz压缩文件为指定大小
  17. matlab累积概率分布,[转载]Matlab累积分布函数cdf与概率密度函数pdf
  18. 使用Three.js在浏览器绘制OFF格式的3D文件
  19. AD(altium designer)15原理图与PCB设计教程(九)——印制电路板的的后续制作
  20. Markdown绘制流程图的方法

热门文章

  1. Python中的单引号和双引号 的使用有什么区别
  2. oracle脚本导出数据文件
  3. 公式计算-C语言实现
  4. linux下u盘网卡驱动,通过u盘给linux安装网卡驱动的做法——深圳培训linux
  5. asp.net 母版页使用详解
  6. 知己知彼百战百胜-备战2020年12月大学英语六级考试
  7. mysql cube用法_SQL中CUBE 用法
  8. 关于mount命令挂载NFS问题
  9. Linux最小化挂载(mount命令)光盘详解
  10. python从入门到大师_Python趣味打怪:60秒学会一个例子,147段简单代码助你从入门到大师 | 中文资源...