#include <stdio.h>
#include <math.h>
#define Year 2018
#define Month 1
#define Day 8 // 纪念日时期,可自行更改
int year_alldays(int year);
int year_sumday(int year, int month);
int get_alldays(int year, int month, int day);
int main()
{
int year, month, day;
printf("纪念日日期为:%d-%02d-%02d\n", Year, Month, Day);
printf("输入一个日期(如2017-03-21):");
scanf("%d-%d-%d", &year, &month, &day);
int day1 = get_alldays(year, month, day);
int day2 = get_alldays(Year, Month, Day);
printf("距离纪念日天数为:%d\n", abs(day1-day2));
return 0;
}
//获取公历年的天数
int year_alldays(int year)
{
if((year%4==0 && year%100!=0) || year%400==0) return 366; else return 365;
}
//获取公历年初至某整月的天数
int year_sumday(int year, int month)
{
int sum=0;
int rui[12]={31,29,31,30,31,30,31,31,30,31,30,31};
int ping[12]={31,28,31,30,31,30,31,31,30,31,30,31};
int ruiflag=0;
if((year%4==0 &&year%100!=0) || year%400==0) ruiflag=1;
for(int index=0;index<month-1;index++)
{
if(ruiflag==1) sum+=rui[index];else sum+=ping[index];
}
return sum;
}
//获取从公历1800年1月25日至当前日期的总天数
int get_alldays(int year, int month, int day)
{
int i=1800,days=-24;
while(i<year)
{
days+=year_alldays(i);
i++;
}
int days2=year_sumday(year,month);
return days+days2+day;
}
温馨提示:答案为网友推荐,仅供参考