计算年、月、日输出该年第几天

输入一个日期的年、月、日,计算并输出这天是该年的第几天。如来,2011年1月31日是该年的第31天

#include <iostream>
using namespace std;

bool isLeapYear(int year) {  // 判断是否为闰年
    if (year % 400 == 0 || (year % 4 == 0 && year % 100 != 0)) {
        return true;
    }
    return false;
}

int getDayNum(int year, int month, int day) {  // 计算该日期是该年的第几天
    int day_num = 0;
    int days_of_month[12] = {31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};

    if (isLeapYear(year)) {  // 处理闰年的二月
        days_of_month[1] = 29;
    }

    for (int i = 0; i < month - 1; i++) {
        day_num += days_of_month[i];
    }

    day_num += day;

    return day_num;
}

int main() {
    int year, month, day;
    cout << "请输入日期的年、月、日:" << endl;
    cin >> year >> month >> day;

    int day_num = getDayNum(year, month, day);
    cout << year << "年" << month << "月" << day << "日是该年的第" << day_num << "天。" << endl;

    return 0;
}


#include <iostream>
using namespace std;

// 判断是否为闰年
bool isLeapYear(int year) {
    return (year % 4 == 0 && year % 100 != 0) || (year % 400 == 0);
}

// 计算该月份之前的天数
int getDaysBeforeMonth(int month, bool isLeap) {
    int days = 0;
    switch (month - 1) {
        case 11: days += 30;
        case 10: days += 31;
        case 9: days += 30;
        case 8: days += 31;
        case 7: days += 31;
        case 6: days += 30;
        case 5: days += 31;
        case 4: days += 30;
        case 3: days += 31;
        case 2: days += isLeap ? 29 : 28;
        case 1: days += 31;
    }
    return days;
}

int main() {
    int year, month, day;
    cout << "请输入日期的年、月、日(用空格隔开):";
    cin >> year >> month >> day;

    bool isLeap = isLeapYear(year); // 判断是否为闰年

    int daysBeforeMonth = getDaysBeforeMonth(month, isLeap); // 计算该月份之前的天数
    int totalDays = daysBeforeMonth + day; // 计算总天数

    cout << year << "年" << month << "月" << day << "日是该年的第" << totalDays << "天" << endl;

    return 0;
}