我必须用C ++编写一个程序,该程序使用以下事实:2020年10月4日为星期日,并确定1/1/1900到31/12/2500之间任何给定日期的日期。 我不知道从哪里开始。 我应该使用什么方法? 我不能使用任何外部库OOP,结构或枚举。 我只想知道逻辑。
答案 0 :(得分:3)
您在这里采用的方法非常简单,只涉及一些数学(模运算)。
将开始日期视为第0天。以天数为单位获取该日期。 Here's a tutorial on date and time in C++(以日期为单位输入日期)
获取输入的日期与第0天之间的天数差:
dateDiff = inputDateInDays - day0
(请保留该数字的符号)
现在将day0 mod 7
视为星期日。假设day0 mod 7 = 0
这样
dateDiff mod 7 = dayOfTheWeek
,其中1是星期一,2是星期二,直到6是星期六。就是这样。
TL; DR(伪代码):
day0 = // Your original date in number of days
dateInput = // Your input date
dayInput = // Convert dateInput into number of days
dateDiff = dayInput - dayInput
// 0 <= dateDiff % 7 <= 6. So figure which number corresponds to which day.
return dateDiff % 7