#include<stdio.h>
//初始化数组保存天数
int a[12]={31,28,31,30,31,30,31,31,30,31,30,31};//普通年
int b[12]={31,29,31,30,31,30,31,31,30,31,30,31};//闰年
//判断闰年
int Leap(int year)
{
if((year%4==0&&year%100!=0)||(year%400==0))
{
return 1;
}
return 0;
}
//计算日期到年初的天数
int Day_Start(int year,int mon,int day)
{
int sum=0;
if(Leap(year)==1)
{
for(int i=0;i<mon-1;i++)
{
sum+=b[i];
}
return sum+day;
}
else
{
for(int i=0;i<mon-1;i++)
{
sum+=a[i];
}
return sum+day;
}
}
//计算日期到年末的天数
int Day_Over(int year,int mon,int day)
{
int sum=0;
if(Leap(year)==1)
{
for(int i=mon;i<12;i++)
{
sum+=b[i];
}
return sum+b[mon-1]-day;
}
else
{
for(int i=mon;i<12;i++)
{
sum+=a[i];
}
return sum+a[mon-1]-day;
}
}
//计算中间的总年天数
int Day_Sum(int year_1,int year_2)
{
int sum;
for(int i=year_1+1;i<year_2;i++)
{
if(Leap(i)==1)
{
sum+=366;
}
else
{
sum+=365;
}
}
return sum;
}
int main()
{
int y_1,m_1,d_1;
int y_2,m_2,d_2;
scanf("%d%d%d",&y_1,&m_1,&d_1);
scanf("%d%d%d",&y_2,&m_2,&d_2);
int sum=0,a,b,c;
if(y_1!=y_2)
{
a=Day_Start(y_2,m_2,d_2);
b=Day_Over(y_1,m_1,d_1);
c=Day_Sum(y_1,y_2);
sum=a+b+c;
}
else
{
a=Day_Over(y_2,m_2,d_2);
b=Day_Over(y_1,m_1,d_1);
sum=b-a;
}
printf("%d\n",sum);
return 0;
}
标签:语言,int,31,30,Leap,计算,year,year%,代码
From: https://www.cnblogs.com/lzzcforever/p/17548730.html