2002年9月29日是Erica的破壳日,那么今年的9月29日就是她的18岁生日啦!通过查日历可知,今年9月29日是星期二 (Tuesday)。好奇的Erica想知道她几周岁的生日是星期几,你能帮帮她吗?
时间: 2024-02-22 22:59:21 浏览: 153
可以通过计算两个日期之间的天数来确定生日是星期几。具体步骤如下:
1. 计算出生日当年的第一天是星期几。
2. 计算今年的第一天是星期几。
3. 计算出生日当年的第一天到生日前一天的天数。
4. 计算今年的第一天到生日当天的天数。
5. 计算两个天数之差,用7取余即可得到生日当天是星期几。
下面是一个示例代码:
```
#include <stdio.h>
int main() {
int birth_year = 2002; // 出生年份
int birth_month = 9; // 出生月份
int birth_day = 29; // 出生日
int this_year = 2020; // 今年的年份
int first_day_of_birth_year; // 出生年份的第一天是星期几
int first_day_of_this_year; // 今年的第一天是星期几
int days_before_birth; // 出生日前一天到出生年份的第一天的天数
int days_before_today; // 今年的第一天到今天的天数
int days_between; // 两个天数之差
int weekday_of_birth; // 出生日是星期几
// 计算出生年份的第一天是星期几
first_day_of_birth_year = (birth_year + (birth_year - 1) / 4 - (birth_year - 1) / 100 + (birth_year - 1) / 400) % 7;
// 计算今年的第一天是星期几
first_day_of_this_year = (this_year + (this_year - 1) / 4 - (this_year - 1) / 100 + (this_year - 1) / 400) % 7;
// 计算出生日前一天到出生年份的第一天的天数
days_before_birth = 0;
for (int i = 1; i < birth_month; i++) {
if (i == 2) {
if ((birth_year % 4 == 0 && birth_year % 100 != 0) || birth_year % 400 == 0) {
days_before_birth += 29;
} else {
days_before_birth += 28;
}
} else if (i == 4 || i == 6 || i == 9 || i == 11) {
days_before_birth += 30;
} else {
days_before_birth += 31;
}
}
days_before_birth += birth_day - 1;
if ((birth_year % 4 == 0 && birth_year % 100 != 0) || birth_year % 400 == 0) {
days_before_birth += 1;
}
// 计算今年的第一天到今天的天数
days_before_today = 0;
for (int i = 1; i < 9; i++) {
if (i == 2) {
if ((this_year % 4 == 0 && this_year % 100 != 0) || this_year % 400 == 0) {
days_before_today += 29;
} else {
days_before_today += 28;
}
} else if (i == 4 || i == 6 || i == 9 || i == 11) {
days_before_today += 30;
} else {
days_before_today += 31;
}
}
days_before_today += 29 - 1;
days_before_today += 31 - 1; // 9月份前的天数
days_before_today += 1; // 9月29日当天的天数
// 计算两个天数之差
days_between = days_before_today - days_before_birth;
// 计算生日是星期几
weekday_of_birth = (first_day_of_birth_year + days_before_birth) % 7;
printf("出生年份的第一天是星期%d\n", first_day_of_birth_year);
printf("今年的第一天是星期%d\n", first_day_of_this_year);
printf("出生日前一天到出生年份的第一天的天数:%d\n", days_before_birth);
printf("今年的第一天到今天的天数:%d\n", days_before_today);
printf("生日当天是星期%d\n", weekday_of_birth);
return 0;
}
```
上述代码中,首先计算出生年份的第一天是星期几和今年的第一天是星期几。然后分别计算出生日前一天到出生年份的第一天的天数和今年的第一天到今天的天数。最后计算两个天数之差,用7取余得到生日当天是星期几。
阅读全文