C语言代码:将2020年1~366天计数转换为日期和星期
C语言代码:将2020年1~366天计数转换为日期和星期
2020年有366天,将2020年1月1日作为计数起点,即计数1,2020年12月31日作为计数终点,即计数366。计数1代表'2020年1月1日星期三',计数10代表'2020年1月10日-星期五'。
通过键盘输入一个1~366之间的值,包括1和366,基于结构体,将其转换为年、月、日、星期,并输出到控制台窗口。
#include <stdio.h>
struct Date {
int year;
int month;
int day;
int weekday;
};
int isLeapYear(int year) {
if (year % 4 == 0 && year % 100 != 0) {
return 1;
}
if (year % 400 == 0) {
return 1;
}
return 0;
}
struct Date convertToDateTime(int count) {
struct Date date;
date.year = 2020;
date.month = 1;
date.day = 1;
date.weekday = 3;
int daysInMonth[] = {31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};
int dayOfYear = count;
if (isLeapYear(date.year)) {
daysInMonth[1] = 29;
}
while (dayOfYear > daysInMonth[date.month - 1]) {
dayOfYear -= daysInMonth[date.month - 1];
date.month++;
}
date.day = dayOfYear;
date.weekday = (date.weekday + count - 1) % 7;
return date;
}
int main() {
int count;
printf("请输入一个1~366之间的数:");
scanf("%d", &count);
if (count < 1 || count > 366) {
printf("输入的数不在1~366之间\n");
return 0;
}
struct Date date = convertToDateTime(count);
printf("%d年%d月%d日", date.year, date.month, date.day);
switch (date.weekday) {
case 0:
printf("星期日\n");
break;
case 1:
printf("星期一\n");
break;
case 2:
printf("星期二\n");
break;
case 3:
printf("星期三\n");
break;
case 4:
printf("星期四\n");
break;
case 5:
printf("星期五\n");
break;
case 6:
printf("星期六\n");
break;
}
return 0;
}
代码解析
- 结构体
Date定义: 结构体包含年、月、日和星期几信息,用于存储日期信息。 - 函数
isLeapYear: 判断年份是否为闰年。 - 函数
convertToDateTime: 将计数转换为日期信息,并计算星期几。 main函数: 从用户获取输入,调用函数进行转换,并将结果输出到控制台。
代码执行流程
- 用户输入一个1~366之间的整数。
- 程序调用
convertToDateTime函数,将计数转换为日期信息和星期几。 - 程序根据日期信息和星期几,输出到控制台窗口。
总结
该代码实现了一个简单的日期转换功能,将2020年1~366天计数转换为日期和星期,并输出到控制台窗口。代码使用结构体和函数,结构清晰,便于理解和修改。
原文地址: https://www.cveoy.top/t/topic/pbHi 著作权归作者所有。请勿转载和采集!