You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
41 lines
997 B
41 lines
997 B
#include<iostream>
|
|
|
|
using namespace std;
|
|
|
|
struct Date {
|
|
int year;
|
|
int month;
|
|
int day;
|
|
};
|
|
int months_1[13] = {0, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};
|
|
int months_2[13] = {0, 31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};
|
|
|
|
bool LeapYear(int year) {
|
|
return ((year % 4 == 0 && year % 100 != 0) || year % 400 == 0);
|
|
}
|
|
|
|
//计算到元年元月元日的差
|
|
int getAbsDay(Date x) {
|
|
int n = 0;
|
|
//以往年有多少天
|
|
for (int i = 1900; i < x.year; i++)
|
|
n += (LeapYear(i)) ? 366 : 365;
|
|
//月-->天数+
|
|
for (int i = 1; i < x.month; i++)
|
|
n += LeapYear(x.year) ? months_2[i] : months_1[i];
|
|
//天数
|
|
n += x.day;
|
|
return n;
|
|
}
|
|
|
|
int main() {
|
|
//计算两个日期对象的差
|
|
Date a = {2021, 8, 26}; //周四
|
|
Date b = {2021, 10, 11}; //?
|
|
|
|
//计算到元年元月元日的差
|
|
int n = getAbsDay(b) - getAbsDay(a);
|
|
//输出
|
|
printf("%d *%d", n, (n + 4) % 7);
|
|
return 0;
|
|
} |