编写一个c++程序,设计函数showweekday计算某一天是星期几
时间: 2023-06-01 20:03:52 浏览: 108
```
#include <stdio.h>
int showweekday(int year, int month, int day);
int main() {
int year, month, day;
printf("请输入日期(年 月 日):");
scanf("%d %d %d", &year, &month, &day);
int weekday = showweekday(year, month, day);
printf("%d年%d月%d日是星期%d\n", year, month, day, weekday);
return 0;
}
int showweekday(int year, int month, int day) {
int y, c, m, d;
if (month == 1 || month == 2) {
y = year - 1;
m = month + 12;
} else {
y = year;
m = month;
}
c = y / 100;
y = y % 100;
d = day;
int w = y + y/4 + c/4 - 2*c + 26*(m+1)/10 + d - 1;
if (w < 0) {
w = (w % 7 + 7) % 7;
} else {
w = w % 7;
}
return w == 0 ? 7 : w;
}
```
说明:
本程序使用蔡勒公式计算星期几,具体算法如下:
1. 如果月份是1月或2月,将年份减1,月份加12。
2. 计算y、c、m、d:
- y表示年份的后两位数
- c表示年份的前两位数
- m表示月份
- d表示日期
3. 计算w:w = y + y/4 + c/4 - 2*c + 26*(m+1)/10 + d - 1
4. 如果w小于0,则w = (w % 7 + 7) % 7,否则w = w % 7
5. 如果w等于0,则表示是星期日,返回7,否则返回w。
注意:本程序计算的是格里高利历的星期,对于儒略历或其他历法可能会有误差。
阅读全文