用c语言设定一个纪念日时间,输入一个日期,显示当天距离纪念日的天数。。大佬们求帮忙,小弟明天有急用

用c语言设定一个纪念日时间,输入一个日期,显示当天距离纪念日的天数。。大佬们求帮忙,小弟明天有急用没那么多积分了。求帮助,谢谢

#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;
}

温馨提示:答案为网友推荐,仅供参考
第1个回答  2018-01-09

自动取当前日期,对比输入的日期,计算相差多少天

~

相似回答