C語(yǔ)言(給出日期和天數(shù),算出之前日期)

注意 : 給定天數(shù)最大為365

#include <stdio.h>

int date_map(int month, int sum);

int main()
{
    int i;
    int year, month, day;
    int days;
    int sum;
    
    printf("Please input year month day days : ");
    scanf("%d %d %d %d:", &year, &month, &day, &days);
    
    // 計(jì)算今年開(kāi)始到現(xiàn)在的天數(shù)
    sum = date_map(month, -1) + day;

    if (year%400 == 0 || (year%100 != 0 && year%4 == 0))
    {
        if (month > 2) sum++;
    }
    
    printf("The before of %d day is : ", days);

    // 天數(shù)(days)小于今年開(kāi)始到現(xiàn)在的天數(shù)(sum)
    if (days < sum)
    {
        if (days < day)
        {
            // 天數(shù)(days)小于當(dāng)前月份的天數(shù)(day)
            printf("year:%d, month:%d, day:%d\n", year, month, (day-days));
        } else {
            // 天數(shù)大于當(dāng)前月份的天數(shù)(day)小于今年開(kāi)始到現(xiàn)在的天數(shù)(sum)
           i = sum - days;
           month = date_map(-1, i);
           printf("year:%d, month:%d, day:%d\n", year, month, (i - date_map(month, -1)));
        }
    } else {
        // 天數(shù)(days)大于今年開(kāi)始到現(xiàn)在的天數(shù)(sum)
        i = 365 - days + sum;
        month = date_map(-1, i);
        //if (month == 12) i--;
        printf("year:%d, month:%d, day:%d\n", (year - 1), month, (i - date_map(month, -1)));
    }

    return 0;
}

int date_map(int month, int sum_t)
{
    switch(month)
    {
        case 1: sum_t = 0; break;
        case 2: sum_t = 31; break;
        case 3: sum_t = 59; break;
        case 4: sum_t = 90; break;
        case 5: sum_t = 120; break;
        case 6: sum_t = 151; break;
        case 7: sum_t = 181; break;
        case 8: sum_t = 212; break;
        case 9: sum_t = 243; break;
        case 10: sum_t = 273; break;
        case 11: sum_t = 304; break;
        case 12: sum_t = 334; break;
        default: break;
    }

    if (month != -1) return sum_t;

    if (month == -1)
    {   
        do{
            switch(sum_t)
            {
                case 0: month = 1; break;
                case 31: month = 2; break;
                case 59: month = 3; break;
                case 90: month = 4; break;
                case 120: month = 5; break;
                case 151: month = 6; break;
                case 181: month = 7; break;
                case 212: month = 8; break;
                case 243: month = 9; break;
                case 273: month = 10; break;
                case 304: month = 11; break;
                case 334: month = 12; break;
                default: break;
            }

            if (month != -1) break;

        }while(sum_t--);
    }
    if (sum_t != -1) return month;
}

運(yùn)行結(jié)果

necasroot@necasroot:~/code/tmp$ ./year
Please input year month day days : 2020 5 21 6
The before of 6 day is : year:2020, month:5, day:15
necasroot@necasroot:~/code/tmp$ ./year
Please input year month day days : 2020 5 21 141
The before of 141 day is : year:2020, month:1, day:1
necasroot@necasroot:~/code/tmp$ ./year
Please input year month day days : 2020 5 21 142
The before of 142 day is : year:2019, month:12, day:31
necasroot@necasroot:~/code/tmp$ ./year
Please input year month day days : 2020 5 21 325
The before of 325 day is : year:2019, month:7, day:1
necasroot@necasroot:~/code/tmp$ ./year
Please input year month day days : 2020 1 1 8
The before of 8 day is : year:2019, month:12, day:24
necasroot@necasroot:~/code/tmp$ ./year
Please input year month day days : 2020 1 8 8
The before of 8 day is : year:2019, month:12, day:31
necasroot@necasroot:~/code/tmp$ ./year
Please input year month day days : 2020 1 1 365
The before of 365 day is : year:2019, month:1, day:1
necasroot@necasroot:~/code/tmp$ vim year.c
necasroot@necasroot:~/code/tmp$ ./year
Please input year month day days : 2020 2 29 365
The before of 365 day is : year:2019, month:3, day:1
necasroot@necasroot:~/code/tmp$

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

友情鏈接更多精彩內(nèi)容