返回题解分享
讨论 / 题解分享/ 帖子详情

纪念日(结果填空) - 题解

#include <iostream>
using namespace std;
bool isLeap(int year) {
    return (year % 4 == 0 && year % 100 != 0) || (year % 400 == 0);
}
int days(int month, int year) {
    switch (month) {
        case 2:
            return isLeap(year) ? 29 : 28;
        case 4: case 6: case 9: case 11: 
            return 30;
        default: 
            return 31;
    }
}

int daysDates(int startDay, int startMonth, int startYear, int endDay, int endMonth, int endYear) {
    int totalDays = 0;

    for (int y = startYear+1; y < endYear; ++y)
        totalDays += isLeap(y) ? 366 : 365;

    for (int m = startMonth; m <= 12; ++m) 
        totalDays += days(m, startYear);

    totalDays -= startDay;

    for (int m = 1; m < endMonth; ++m) 
        totalDays += days(m, endYear);

    totalDays += endDay;

    return totalDays;
}

int main() {
    int startDay = 23, startMonth = 7, startYear = 1921;
    int endDay = 1, endMonth = 7, endYear = 2020;
    int totalDays = daysDates(startDay, startMonth, startYear, endDay, endMonth, endYear);
    int  totalMinutes = (totalDays) * 24 * 60;
    cout <<  totalMinutes << endl;
    return 0;
}
0 回复 0 转发 0 喜欢 1 阅读
回复 (0)
默认 最新
暂无回复,快来抢沙发!