用C语言根据天数输出对应的年、月、日

时间:2025-02-10 08:08:51
//接口定义,year为年,date为天数,*nmonth是计算得出的月,*nday是计算得出的日
void month_day(int year, int date, int* nmonth, int* nday) {
    int yu, hao;
    int wang[2][13] = {
        {0,31,28,31,30,31,30,31,31,30,31,30,31},
        {0,31,29,31,30,31,30,31,31,30,31,30,31},                        //定义数组存放闰年和平年的天数
    };
    hao = (year % 4 == 0 && year % 100 != 0) || year % 400 == 0;        //闰年判别条件
    for (yu = 1; date > wang[hao][yu]; yu++)
        date -= wang[hao][yu];
    *nmonth = yu;
    *nday = date;
}
int main() {
    int day, month, year, date;                                //定义日、月、年和天数的变量
    printf("请输入年份和第几天:\n");
    scanf_s("%d%d", &year, &date);
    if (date >= 1 && year >= 1) {
        if ((year % 4 == 0 && year % 100 != 0) || year % 400 == 0 && date < 367) {
            month_day(year, date, &month, &day);
            printf("具体年、月、日如下:\n%d-%d-%d", year, month, day);
        }
        if (year % 4 != 0 && date < 366) {
            month_day(year, date, &month, &day);
            printf("具体年、月、日如下:\n%d-%d-%d", year, month, day);
        }
    }
    else {
        printf("搞事情是吧?这边给你强行退出!\n");
    }
    return 0;
}