最近,谭老师统计分析以及预测事件发生的规律时,需要知道事件发生的日期是星期几。已知,该项任务起始于2010年1月1日,是星期五,你请编写程序,判断输入的日期是星期几,用c++编写
时间: 2024-09-13 12:13:28 浏览: 50
<<要用C++编写程序判断输入日期的星期,可以通过计算从基准日期2010年1月1日(星期五)开始到输入日期的天数差,然后将这个天数差模7得到与基准日期的星期差,从而计算出输入日期的星期几。以下是一个简单的C++程序示例,实现这个功能:
```cpp
#include <iostream>
using namespace std;
// 判断是否为闰年的函数
bool isLeapYear(int year) {
return (year % 4 == 0 && year % 100 != 0) || (year % 400 == 0);
}
// 每个月的天数,平年和闰年
int daysOfMonth[2][13] = {
{0, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31},
{0, 31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31}
};
// 计算输入日期的星期几
int findDayOfWeek(int year, int month, int day) {
// 计算基准日期到输入日期之间的年份差
int yearDiff = year - 2010;
// 计算基准日期到输入日期之间的总天数
int totalDays = yearDiff * 365 + (yearDiff / 4) - (yearDiff / 100) + (yearDiff / 400);
// 加上基准日期到输入日期之间的月份天数
for (int i = 1; i < month; ++i) {
totalDays += daysOfMonth[isLeapYear(year)][i];
}
// 加上输入日期的日数
totalDays += day;
// 计算与星期五的差值
int dayOfWeek = (totalDays - 1) % 7; // 减1因为2010年1月1日是星期五,星期五对应0
return dayOfWeek;
}
int main() {
int year, month, day;
cout << "请输入日期(年 月 日): ";
cin >> year >> month >> day;
int dayOfWeek = findDayOfWeek(year, month, day);
// 输出星期几,注意星期天是0,星期一到星期六分别对应1到6
cout << "输入的日期是星期" << (dayOfWeek == 0 ? "天" : (dayOfWeek == 1 ? "一" : (dayOfWeek == 2 ? "二" : (dayOfWeek == 3 ? "三" : (dayOfWeek == 4 ? "四" : (dayOfWeek == 5 ? "五" : "六")))))) << endl;
return 0;
}
```
这个程序通过计算输入日期和基准日期之间的总天数差,并利用模运算确定星期几。基准日期2010年1月1日是星期五,对应于0。然后根据输入的年、月、日计算天数差,并将结果模7得到星期几。
阅读全文