如果一个日期的日期以 1 结尾(1日、11日、21日、31日)且为星期一,则称这个日期为一好日期。 请问从 1901 年 1 月 1 日至 2024 年 12 月 31 日总共有多少个一好日期。 提示:1901 年 1 月 1 日是星期二。C语言
时间: 2024-11-19 18:04:12 浏览: 42
这个问题可以使用编程技巧来解决,因为我们需要遍历给定的时间范围,并检查每个日期是否符合条件。这里我们可以创建一个C程序来计算这个总数。由于这是一个相对复杂的问题,涉及到对所有年份和月份的处理,我们可以编写一个循环结构来逐个日期检查。
以下是一个简单的C程序思路:
```c
#include <stdio.h>
#include <stdbool.h>
// 计算某一年中的特定日期是星期几
int day_of_week(int year, int month, int day) {
// 使用Zeller's congruence公式来计算星期
int century = year / 100;
int week_day = (day + ((13 * (month + 1)) / 5) + century + (century / 4) - (century / 100) + (century / 400)) % 7;
return week_day; // 星期天是0,星期一是1
}
bool is_one_good_date(int year, int month, int day) {
if (day == 1 && day_of_week(year, month, day) == 1) { // 判断是否为一好日期
return true;
}
return false;
}
int count_one_good_dates(int start_year, int end_year) {
int total = 0;
for (int year = start_year; year <= end_year; year++) {
for (int month = 1; month <= 12; month++) {
for (int day = 1; day <= 31; day++) {
if (is_one_good_date(year, month, day)) {
total++;
}
}
}
}
return total;
}
int main() {
int start_year = 1901;
int end_year = 2024;
int one_good_dates_count = count_one_good_dates(start_year, end_year);
printf("从1901年1月1日至2024年12月31日,共有 %d 个一好日期。\n", one_good_dates_count);
return 0;
}
```
注意:这个程序假设输入的年份是正确的公元纪年,并且使用了一个名为`day_of_week`的辅助函数来计算给定日期的星期数。运行此程序将会得到结果。
阅读全文