定义一个结构体变量(包括年、月、日)。计算该日在本年中是第几天?注意闰年问题

题目描述

定义一个结构体变量(包括年、月、日)。计算该日在本年中是第几天?注意闰年问题

编写思路

下面程序中,我们首先定义了一个名为 Date 的结构体,包含三个整型成员变量 yearmonthday,分别表示年、月和日。接下来,我们定义了一个函数 isLeapYear() 来判断给定的年份是否为闰年。根据闰年的定义,能够被 4 整除但不能被 100 整除的年份,或者能够被 400 整除的年份都是闰年。

然后,我们定义了另一个函数 calculateDayOfYear(),该函数接收一个 Date 结构体作为参数,并根据输入的日期计算出当天是本年中的第几天。在这个函数中,我们使用一个数组 daysInMonth[] 来存储每个月份的天数(2 月份的天数先默认为 28),并通过循环累加到给定日期的前一个月的天数。同时,如果给定日期所在的年份是闰年且月份大于 2 月,我们会将当天的日期再加一。

最后,在 main() 函数中,我们首先提示用户输入日期,并调用 calculateDayOfYear() 函数来计算出当天是本年中的第几天,并输出结果。

代码案例

#include <iostream>

struct Date {
    int year;
    int month;
    int day;
};

bool isLeapYear(int year) {
    return (year % 4 == 0 && year % 100 != 0) || (year % 400 == 0);
}

int calculateDayOfYear(const Date& date) {
    int daysInMonth[] = {0, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};
    int dayOfYear = 0;

    for (int i = 1; i < date.month; i++) {
        dayOfYear += daysInMonth[i];
    }
    
    dayOfYear += date.day;

    if (isLeapYear(date.year) && date.month > 2) {
        dayOfYear += 1;
    }

    return dayOfYear;
}

int main() {
    Date date;

    std::cout << "Enter date (year month day): ";
    std::cin >> date.year >> date.month >> date.day;

    int dayOfYear = calculateDayOfYear(date);

    std::cout << "Day of the year: " << dayOfYear << std::endl;

    return 0;
}

 

© 版权声明
THE END
喜欢就支持一下吧
点赞8赞赏 分享