题解 | #日期差值#
日期差值
https://www.nowcoder.com/practice/ccb7383c76fc48d2bbc27a2a6319631c
#include <iostream>
#include <cmath>
using namespace std;
//重点学习
//利用scanf在输入的时候将字符串存为数字
int p[13]={0,31,28,31,30,31,30,31,31,30,31,30,31};
int Run(int k)
{
if((k%400==0)||((k%4==0)&&(k%100!=0)))return 1;
else return 0;
}
int main() {
int y1,y2,m1,m2,d1,d2;
scanf("%4d%2d%2d",&y1,&m1,&d1);
scanf("%4d%2d%2d",&y2,&m2,&d2);
//算出距离0000-00-00的绝对时间,再相减即
//这样就不用再比较哪个日期在后了
int sum1=0,sum2=0;
for(int i=0;i<=y1-1;i++)
{
if(Run(i)==1)sum1+=366;
else sum1+=365;
}
if(Run(y1)==1)p[2]=29;
else p[2]=28;
for(int i=1;i<=m1-1;i++)
{
sum1+=p[i];
}
sum1+=d1;
for(int i=0;i<=y2-1;i++)
{
if(Run(i)==1)sum2+=366;
else sum2+=365;
}
if(Run(y2)==1)p[2]=29;
else p[2]=28;
for(int i=1;i<=m2-1;i++)
{
sum2+=p[i];
}
sum2+=d2;
int dif=abs(sum1-sum2)+1;
cout<<dif;
}
查看27道真题和解析
