#include <stdio.h>

typedef struct { int year; int month; int day; int week; } Date;

int isLeapYear(int year) { return (year % 4 == 0 && year % 100 != 0) || (year % 400 == 0); }

Date convertToDate(int count) { Date date; int daysOfMonth[] = {31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};

date.year = 2020;
date.month = 1;
date.day = 1;
date.week = 3;

while (count > 1) {
    int daysInMonth = daysOfMonth[date.month - 1];
    if (date.month == 2 && isLeapYear(date.year)) {
        daysInMonth = 29;
    }
    
    if (count > daysInMonth) {
        date.day += daysInMonth;
        count -= daysInMonth;
        date.month++;
        if (date.month > 12) {
            date.month = 1;
            date.year++;
        }
        date.week = (date.week + daysInMonth) % 7;
    } else {
        date.day += count;
        date.week = (date.week + count) % 7;
        count = 0;
    }
}

return date;

}

void printDate(Date date) { char* weekStrings[] = {'星期一', '星期二', '星期三', '星期四', '星期五', '星期六', '星期日'}; printf('%d年%d月%d日-%s\n', date.year, date.month, date.day, weekStrings[date.week]); }

int main() { int count; printf('请输入一个1~366之间的数:'); scanf('%d', &count);

if (count < 1 || count > 366) {
    printf('输入无效\n');
    return 0;
}

Date date = convertToDate(count);
printDate(date);

return 0;

}


原文地址: https://www.cveoy.top/t/topic/pbJq 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录