C语言:已知1980年1月1日是星期二。 任意输入一个日期,求这一天是星期几
时间: 2024-11-20 08:43:00 浏览: 25
在C语言中,你可以使用蔡勒公式(Zeller's congruence)来计算给定日期是星期几。该公式是一种基于格里高利历(即公历)的算法,它不需要闰年的特殊处理。以下是蔡勒公式的步骤:
```c
int dayOfWeek(int year, int month, int date) {
if (month < 3) { // 如果是前三个月(一月和二月)
month += 12;
year--;
}
int century = year / 100; // 取整数年份除以100
int weekDay = (date + 2 * month + 3 * (month + 1) / 5 + year + year / 4 - year / 100 + year / 400) % 7;
return weekDay; // 返回的结果0代表周日,1代表周一,以此类推
}
```
你可以把这个函数应用到1980年1月1日,如果输入其他任意日期,比如用户输入的`year`, `month`, 和`date`,就可以得到这个日期是星期几。
相关问题
用C语言实现:输入年月日,输出当天是星期几的英文单词(Monday…)。注:已知2000年1月1日是星期天
在C语言中,我们可以使用蔡勒公式(Zeller's congruence)来计算给定日期对应的星期。这个公式如下:
```c
int dayOfWeek(int year, int month, int day) {
if (month < 3) {
month += 12;
year--;
}
int h = (day + (13 * (month + 1) / 5) + year + (year / 4) - (year / 100) + (year / 400)) % 7;
switch (h) {
case 0: return "Sunday";
case 1: return "Monday";
case 2: return "Tuesday";
case 3: return "Wednesday";
case 4: return "Thursday";
case 5: return "Friday";
case 6: return "Saturday";
}
}
```
这里我们首先调整月份(如果一月或二月,则将月份加12并将年份减1),然后应用蔡勒公式计算出星期数(范围0-6,其中0表示周日)。最后通过switch语句返回相应的英文单词。
你可以使用类似这样的函数来获取任何给定日期的星期:
```c
#include <stdio.h>
int main() {
int year = 2000;
int month = 1;
int day = 1;
printf("For the date %d-%d-%d, it's %s.\n", year, month, day, dayOfWeek(year, month, day));
return 0;
}
```
如果你想让用户输入年、月、日,你可以替换`main`函数中的`year`, `month`, 和 `day`变量,并添加输入处理部分。
C语言程序,已知2021年是星期五,求2021年任意一天星期几
在C语言中,我们可以利用模运算(%)和蔡勒公式(Zeller's Congruence)来计算给定日期是星期几。蔡勒公式是一个古老的算法,可以基于年、月、日来确定星期几。公式如下:
```
int dayOfWeek(int year, int month, int day) {
if (month < 3) {
month += 12; // 如果月份小于3,转换为阳历中的实际月份
year--;
}
int century = year / 100;
int weekDay = (day + 2*month + 3*(month+1)/5 + year + year/4 - year/100 + year/400 + century - 2*century) % 7;
return weekDay; // 返回的结果范围是0到6,0代表周日,1代表周一,以此类推
}
```
要找出2021年任意一天是星期几,你可以先确定该月的日数(注意二月有28天或29天),然后调用上述函数。例如,如果想知道1月1日是星期几,就是`dayOfWeek(2021, 1, 1)`。
至于已知2021年是星期五的情况,可以直接跳过上述步骤,因为我们已经知道年初的一天是星期五,所以对于任意同一年内的每一天,只需要加上对应的天数,再通过取余7来确定新的星期几。
如果你想看到具体的某一天,只需把那个日子代入上面的函数即可。例如,你想知道2021年7月10日是星期几,就是`dayOfWeek(2021, 7, 10)`。
阅读全文