已知1900年1月1日是星期一,问这天之后的任意一天是星期几?1900年1月1日以后的任一合法日期,格式为yyyy-MM-dd,如2000-01-01。输出日期所对应的星期。用C语言做这个题
时间: 2025-01-27 19:10:52 浏览: 63
在C语言中,计算从特定日期开始到另一个日期之间的天数,然后根据一周七天的周期来确定星期几是一个常见的任务。你可以使用`mktime()`函数将日期转换为时间戳,加上相应的天数,再通过`gmday()`函数获取星期几。这里提供一个简单的步骤:
1. 定义一个辅助函数,例如`weekday_from_date(char* date)`,接收输入的字符串日期作为参数。
```c
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
// 帮助函数:返回给定日期的星期几
int weekday_from_date(char* date) {
struct tm t = {0};
strptime(date, "%Y-%m-%d", &t); // 解析日期格式
time_t timestamp = mktime(&t); // 转换为时间戳
return (int)t.tm_wday; // tm_wday范围0-6,0代表周日
}
int main() {
char input_date[] = "1900-01-01";
int days_since_1900 = 0; // 自1900年1月1日起的天数
// 确保输入日期是星期一
if (weekday_from_date(input_date) != 1) {
printf("Given date is not a Monday. Cannot determine subsequent day.\n");
return 1;
}
// 添加额外的天数
// 例如,如果你想知道第二天是哪天,days_since_1900 = 1;
days_since_1900 = 1;
// 计算新的星期几
char result_date[32];
strftime(result_date, sizeof(result_date), "%Y-%m-%d", localtime(×tamp + days_since_1900 * 86400)); // 加上天数并格式化结果
int new_weekday = weekday_from_date(result_date);
// 输出结果
switch (new_weekday) {
case 0: printf("New date is Sunday.\n"); break;
case 1: printf("New date is Monday.\n"); break;
// ...处理其他六天...
}
return 0;
}
```
请注意,这个示例假定了输入的日期确实是1900年1月1日的星期一。如果需要验证这一点,你需要在主函数中先检查。同时,实际应用中可能需要处理闰年等复杂情况,这里简化了处理。
阅读全文
相关推荐


















