#include <stdio.h>

// 定义结构体表示日期 struct Date { int year; int month; int day; int weekday; };

// 计算某年是否为闰年 int isLeapYear(int year) { if (year % 4 == 0 && year % 100 != 0 || year % 400 == 0) { return 1; } else { return 0; } }

// 计算某月的天数 int getDaysOfMonth(int year, int month) { int daysOfMonth[12] = {31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31}; if (month == 2 && isLeapYear(year)) { return 29; } else { return daysOfMonth[month - 1]; } }

// 根据计数值获取日期 void getDate(int count, struct Date *date) { date->year = 2020; date->month = 1; date->day = 1; date->weekday = 3;

while (count > 1) {
    int daysOfMonth = getDaysOfMonth(date->year, date->month);
    if (count <= daysOfMonth) {
        date->day += count;
        date->weekday = (date->weekday + count - 1) % 7;
        count = 0;
    } else {
        count -= daysOfMonth;
        date->month++;
        if (date->month > 12) {
            date->year++;
            date->month = 1;
        }
        date->day = 1;
        date->weekday = (date->weekday + daysOfMonth) % 7;
    }
}

}

// 输出日期 void printDate(struct Date *date) { char *weekdays[7] = {"星期日", "星期一", "星期二", "星期三", "星期四", "星期五", "星期六"}; printf("%d年%d月%d日-%s\n", date->year, date->month, date->day, weekdays[date->weekday]); }

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

if (count < 1 || count > 366) {
    printf("输入有误,请重新运行程序并输入正确的数值。\n");
    return 1;
}

struct Date date;
getDate(count, &date);
printDate(&date);

return 0;

}


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

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