输入:一个合法的公历日期,格式为“XXXXXXXX”,分别代表年(4 位)、月(2 位)、日(2 位)。 输出:当日对应星期几的英语缩写(3 个字母,首字母大写)。用C语言
时间: 2024-10-24 22:15:45 浏览: 20
输入一个合法的公历日期,例如"20230607",表示的是2023年的6月7日。要计算出这个日期对应的星期几,可以使用C语言中的`mktime`函数结合`strftime`函数来实现。首先将字符串转换成时间结构体,然后获取星期几的英文缩写。
下面是一个简单的示例代码片段:
```c
#include <stdio.h>
#include <time.h>
#include <stdlib.h>
#include <string.h>
#define DAY_OF_WEEK 3 /* 星期天到星期六,下标从0开始 */
char* get_weekday_from_date(char date_str[9]) {
struct tm time_info;
char weekday[4];
// 将字符串转换为时间戳
sscanf(date_str, "%d%d%d", &time_info.tm_year, &time_info.tm_mon, &time_info.tm_mday);
time_info.tm_year -= 1900; // 转换为公元纪元
time_info.tm_mon--; // 月份从0开始计数
// 获取星期几(0 - Sunday, 1 - Monday, ..., 6 - Saturday)
timegm(&time_info, &time_info);
// 格式化星期几为英文缩写
weekday[0] = 'S' + DAY_OF_WEEK - time_info.tm_wday; // 星期日到星期六
weekday[1] = '\0'; // 添加结束符
return weekday;
}
int main() {
char date_input[] = "20230607";
char* weekday = get_weekday_from_date(date_input);
printf("The date %s corresponds to %s\n", date_input, weekday);
free(weekday); // 不忘记释放内存
return 0;
}
```
运行此程序会输出类似 "The date 20230607 corresponds to Thu",表示6月7日是星期四。
阅读全文