C语言实现日期转换:将2020年计数转换为年、月、日、星期
C语言实现日期转换:将2020年计数转换为年、月、日、星期
本代码实现将2020年1月1日作为计数起点(计数1),将2020年12月31日作为计数终点(计数366),通过输入1~366之间的数值,转换为年、月、日、星期并输出。
#include <stdio.h>
typedef struct {
int year;
int month;
int day;
int week;
} Date;
int isLeapYear(int year) {
if ((year % 4 == 0 && year % 100 != 0) || year % 400 == 0) {
return 1;
} else {
return 0;
}
}
void convertToDate(int count, Date *date) {
date->year = 2020;
int monthDays[] = {31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};
if (isLeapYear(date->year)) {
monthDays[1] = 29;
}
int i;
for (i = 0; i < 12; i++) {
if (count <= monthDays[i]) {
date->month = i + 1;
date->day = count;
break;
}
count -= monthDays[i];
}
int startWeek = 3; // 2020年1月1日星期三
date->week = (startWeek + count - 1) % 7;
}
void printDate(Date date) {
char *weekStr[] = {'星期日', '星期一', '星期二', '星期三', '星期四', '星期五', '星期六'};
printf('%d年%d月%d日-%s\n', date.year, date.month, date.day, weekStr[date.week]);
}
int main() {
int count;
printf('请输入一个1~366之间的值:');
scanf('%d', &count);
if (count >= 1 && count <= 366) {
Date date;
convertToDate(count, &date);
printDate(date);
} else {
printf('输入值不在范围内\n');
}
return 0;
}
运行示例:
请输入一个1~366之间的值:10 2020年1月10日-星期五
代码说明:
typedef struct Date:定义一个结构体Date,用于存储日期信息(年、月、日、星期)。isLeapYear(int year):判断输入年份是否为闰年。convertToDate(int count, Date *date):将计数转换为年、月、日、星期,并将结果存储在Date结构体中。printDate(Date date):将日期信息输出到控制台。main():主函数,用于接收用户输入的计数,调用函数进行转换和输出。
代码中需要注意的点:
startWeek变量存储 2020 年 1 月 1 日的星期,为星期三,因此值为 3。convertToDate函数中,使用循环遍历每个月,并计算当前计数在哪个月份,最后根据计数计算星期。printDate函数使用数组存储星期名称,根据date.week的值输出对应星期。
希望以上解释对您有所帮助。如果您还有其他问题,请随时提问。
原文地址: https://www.cveoy.top/t/topic/pbK2 著作权归作者所有。请勿转载和采集!