c++定义一个结构体类型(包括年、月、日)。编写程序读入“年-月-日”格式的日期,并计算该日期是该年中的第几天。注意闰年问题
时间: 2023-12-03 19:09:25 浏览: 102
结构体变量(包括年、月、日),编程序,要求输入年月日,程序能计算并输出该日在本年中是第几天
好的,下面是这个程序的代码实现:
```c++
#include <iostream>
using namespace std;
struct Date {
int year;
int month;
int day;
};
// 判断是否是闰年
bool isLeapYear(int year) {
return year % 4 == 0 && year % 100 != 0 || year % 400 == 0;
}
// 计算该日期是该年中的第几天
int getDayOfYear(Date date) {
int days[13] = {0, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31}; // 每月的天数
int sum = date.day;
for (int i = 1; i < date.month; i++) {
sum += days[i];
}
if (date.month > 2 && isLeapYear(date.year)) { // 如果是闰年并且月份大于2月
sum++;
}
return sum;
}
int main() {
Date date;
char temp;
cout << "请输入日期(格式:年-月-日):" << endl;
cin >> date.year >> temp >> date.month >> temp >> date.day;
cout << "该日期是该年中的第 " << getDayOfYear(date) << " 天。" << endl;
return 0;
}
```
这个程序定义了一个结构体类型 `Date`,包括年、月、日三个成员变量。在 `isLeapYear()` 函数中判断是否是闰年,如果是则返回 `true`,否则返回 `false`。在 `getDayOfYear()` 函数中,先定义了一个数组 `days`,保存了每个月的天数,然后根据输入的日期计算出该日期是该年中的第几天。如果是闰年并且月份大于2月,则多加一天。最后在 `main()` 函数中读入日期,调用 `getDayOfYear()` 函数计算出该日期是该年中的第几天,并输出结果。
阅读全文