C++显示某年某月某日是星期几
时间: 2024-05-03 11:21:10 浏览: 147
以下是一个用C语言编写的程序,可以输入某年某月某日,然后计算并输出这一天是星期几。
```c
#include <stdio.h>
int main()
{
int year, month, day;
printf("请输入年月日,格式为:年 月 日\n");
scanf("%d %d %d", &year, &month, &day);
int days[] = { 0, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 };
int total_days = 0;
for (int i = 1; i < month; i++) {
total_days += days[i];
}
total_days += day;
if (year % 4 == 0 && (year % 100 != 0 || year % 400 == 0) && month > 2) {
total_days += 1;
}
int day_of_week = (year - 1) % 7;
for (int i = 1; i < year; i++) {
if (i % 4 == 0 && (i % 100 != 0 || i % 400 == 0)) {
day_of_week = (day_of_week + 2) % 7;
} else {
day_of_week = (day_of_week + 1) % 7;
}
}
for (int i = 1; i < month; i++) {
day_of_week = (day_of_week + days[i]) % 7;
if (i == 2 && year % 4 == 0 && (year % 100 != 0 || year % 400 == 0)) {
day_of_week = (day_of_week + 1) % 7;
}
}
day_of_week = (day_of_week + day - 1) % 7;
char* weekdays[] = { "星期日", "星期一", "星期二", "星期三", "星期四", "星期五", "星期六" };
printf("%d年%d月%d日是%s。\n", year, month, day, weekdays[day_of_week]);
return 0;
}
```
程序的运行方式是:
1. 先输出提示信息,让用户输入年月日;
2. 读入用户输入的年月日;
3. 根据输入的年月日计算出该天是这一年的第几天,包括闰年的情况;
4. 根据输入的年份和月份计算出该年的1月1日是星期几,然后再根据该天是这一年的第几天计算出这一天是星期几;
5. 输出结果。
由于闰年的情况比较复杂,所以程序中使用了一些较为复杂的计算方式。但是这种方法可以确保准确性,即使是在比较古老的年代也能正确地计算出星期几。
阅读全文