从键盘输入一个日期(year-month-day),计算并输出该日期是该年的第几天。请按以下给定的函数原型编程: int CalcDays( int year, int month,int day); 返回值:返回的是日期(year-month-day)对应的那天是该年的第几天;若输入的数据有任意一个不满足条件,返回值是-1。
时间: 2024-02-13 20:00:51 浏览: 46
好的,我可以帮你编写这个函数。以下是函数的代码实现:
```c++
int CalcDays(int year, int month, int day) {
// 判断输入的年、月、日是否合法
if (year < 0 || month < 1 || month > 12 || day < 1 || day > 31) {
return -1;
}
// 判断是否是闰年
bool is_leap_year = (year % 4 == 0 && year % 100 != 0) || (year % 400 == 0);
// 定义一个数组,存储每个月份的天数,注意:二月份的天数需要根据是否是闰年来确定
int days_of_month[] = {31, 28 + is_leap_year, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};
// 计算该日期是该年的第几天,累加每个月份的天数
int days = 0;
for (int i = 0; i < month - 1; i++) {
days += days_of_month[i];
}
days += day;
// 返回结果
return days;
}
```
该函数首先判断输入的年、月、日是否合法,如果不合法则返回-1。然后根据输入的年份判断是否是闰年,接着定义一个数组存储每个月份的天数,计算该日期是该年的第几天,最后返回结果即可。
相关推荐
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)