1037:18岁生日(日期计算问题)
2014-11-06 14:33
591 查看
题目描述
小明的18岁生日就要到了,他当然很开心,可是他突然想到一个问题,是不是每个人从出生开始,到达18岁生日时所经过的天数都是一样的呢?似乎并不全都是这样,所以他想请你帮忙计算一下他和他的几个朋友从出生到达18岁生日所经过的总天数,让他好来比较一下。输入格式
输入的第一行是一个数T,后面T行每行有一个日期,格式是YYYY-MM-DD。如我的生日是1988-03-07。输出
T行,每行一个数,表示此人从出生到18岁生日所经过的天数。如果这个人没有18岁生日,就输出-1。样例输入
11988-03-07
样例输出
6574思路:计算十八岁的生日距离出生日期有多少天。
#include <iostream> using namespace std; bool ifLeap(int year);//判断是否闰年 int getAdDays(int year,int month,int day);//判断日期是公元后第几天?从0000.01.01天开始 int mDays[12] = {31,28,31,30,31,30,31,31,30,31,30,31}; int main(){ int T; char c; cin>>T; while(T--){ int y,m,d; cin>>y>>c>>m>>c>>d; if(m==2&&d==29)cout<<-1<<endl; else{ cout<<getAdDays(y+18,m,d)-getAdDays(y,m,d)<<endl; } } return 0; } bool ifLeap(int year){ if(year%400==0 ||(year%100!=0 && year%4==0)) return true; return false; } int getAdDays(int year,int month,int day){ int aYear = 0,aMonth = 1,aDay = 1,days = 0,i; for(i=1;i<=year;i++){ days+=365; if(ifLeap(i-1)) days+=1; } for(i=1;i<month;i++){ days+=mDays[i-1]; } if(ifLeap(year) && month>2) days+=1; days+=day; return days; }
相关文章推荐
- HDU 1201 18岁生日(日期计算)
- HDU--1201 -- 18岁生日 [水] [日期计算]
- HDU1201 18岁生日【日期计算+水题】
- java中日期的计算问题
- 根据生日的月份和日期,一行代码计算星座的js小函数(最简)
- MySQL日期计算及格式转换问题
- sicily--1814. 日期计算问题
- PHP中计算两个日期之差的问题
- 第十七周 项目4.2日期结构体(计算两个人的生日相差多少天)
- sicily 1814.日期计算问题
- NSDate的计算问题,日期计算,时区问题,NSTimer
- Sicily 1814日期计算问题
- 关于日期计算的问题
- java 根据生日计算年龄 Java问题通用解决代码
- 1037:18岁生日
- 根据生日的月份和日期,一行代码计算星座的js小函数(最简)
- java 计算生日 剩余天数 (两个日期间隔天数)
- Java中几个关于日期计算的问题
- 计算任意两个日期之间的天数问题
- java的日期计算问题