C语言代码:将2020年计数转换为日期和星期

本文提供了一个C语言代码示例,用于将2020年1月1日作为起点,将1至366的计数转换为年、月、日和星期。该代码使用结构体存储日期信息,并考虑闰年的情况。

#include<stdio.h>

struct Date {
    int year;
    int month;
    int day;
    int weekday;
};

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

void convertToDate(int count, struct Date *date) {
    int daysPerMonth[] = {31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};
    int i, sumDays = 0;
    
    date->year = 2020;
    
    for (i = 0; i < 12; i++) {
        if (count <= sumDays + daysPerMonth[i]) {
            date->month = i + 1;
            date->day = count - sumDays;
            break;
        }
        sumDays += daysPerMonth[i];
        
        if (i == 1 && isLeapYear(date->year))
            sumDays++;
    }
    
    date->weekday = (count + 2) % 7;
    if (date->weekday == 0)
        date->weekday = 7;
}

int main() {
    int count;
    struct Date date;
    
    printf("请输入一个1~366之间的数字:");
    scanf("%d", &count);
    
    convertToDate(count, &date);
    
    printf("%d年%d月%d日 星期%d\n", date.year, date.month, date.day, date.weekday);
    
    return 0;
}

运行代码后,程序会提示用户输入一个1~366之间的数字,然后将该数字转换为年、月、日、星期,并输出到控制台窗口。


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

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