题目描述
定义一个结构体变量(包括年、月、日)。计算该日在本年中是第几天?注意闰年问题
编写思路
下面程序中,我们首先定义了一个名为 Date
的结构体,包含三个整型成员变量 year
、month
和 day
,分别表示年、月和日。接下来,我们定义了一个函数 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