机试指南 日期类问题 例2.3 日期差值

it2025-02-28  19

题目描述

有两个日期,求两个日期之间的天数,如果两个日期是连续的我们规定他们之间的天数为两天

输入描述:

有多组数据,每组数据有两行,分别表示两个日期,形式为YYYYMMDD

输出描述:

每组数据输出一行,即日期差值 示例1

输入

20110412 20110422

输出

11 1 #include<stdio.h> 2 #include<iostream> 3 using namespace std; 4 #define ISyear(x) x%100!=0&&x%4==0 || x%400==0 ? 1:0 5 //定义宏判断是否是闰年,方便计算每月天数 6 int dayOfMonth[13][2]= 7 { 8 0,0, 9 31,31, 10 28,29, 11 31,31, 12 30,30, 13 31,31, 14 30,30, 15 31,31, 16 31,31, 17 30,30, 18 31,31, 19 30,30, 20 31,31, 21 }; 22 struct Date 23 { 24 int day; 25 int month; 26 int year; 27 void nextday() 28 { 29 day++; 30 if(day>dayOfMonth[month][ISyear(year)]) 31 { 32 day=1; 33 month++; 34 if(month>12) 35 { 36 month=1; 37 year++; 38 } 39 } 40 } 41 }; 42 int buf[5001][13][32]; //保存预处理的天数 43 int Abs(int x) 44 { 45 x<0 ? -x:x; 46 } 47 int main() 48 { 49 Date temp; 50 int cnt=0; 51 temp.day=1; 52 temp.month=1; 53 temp.year=0; 54 while(temp.year!=5001) 55 { 56 buf[temp.year][temp.month][temp.day]=cnt; 57 temp.nextday(); 58 cnt++; 59 } 60 int d1,m1,y1; 61 int d2,m2,y2; 62 while(scanf("%4d%2d%2d",&y1,&m1,&d1)!=EOF) 63 { 64 scanf("%4d%2d%2d",&y2,&m2,&d2); 65 cout<<buf[y2][m2][d2]-buf[y1][m1][d1]+1<<endl; 66 } 67 } View Code

 

转载于:https://www.cnblogs.com/qing123tian/p/11153675.html

最新回复(0)