题目描述 给定一个具体的日期,请输出,这一天是当年的第几天? 输入格式 输入一行,为年-月-日, 输出格式 输出一行,只有一个整数,表示这一天为那一年的第多少天 样例 样例输入 2000-1-31 样例输出 31 数据范围与提示 别忘记考虑闰年问题c++代码
时间: 2024-02-25 12:53:56 浏览: 80
java代码-使用java解决输入某年某月某日 判断其是那一年的第多少天的问题
好的,以下是 C++ 代码实现:
```cpp
#include <iostream>
#include <cstdio>
#include <cstring>
#include <cstdlib>
#include <algorithm>
#include <cmath>
using namespace std;
int daysOfMonth[13][2] = {
{0,0},
{31,31},
{28,29},
{31,31},
{30,30},
{31,31},
{30,30},
{31,31},
{31,31},
{30,30},
{31,31},
{30,30},
{31,31},
};
int isLeap(int year) {
return (year % 4 == 0 && year % 100 != 0) || year % 400 == 0;
}
int main() {
int year, month, day;
scanf("%d-%d-%d", &year, &month, &day);
int ans = 0;
for (int i = 1; i < month; i++) {
ans += daysOfMonth[i][isLeap(year)];
}
ans += day;
if (isLeap(year) && month > 2) ans++;
printf("%d\n", ans);
return 0;
}
```
这段代码首先读入日期字符串,并将年月日分别存储到 `year`、`month` 和 `day` 变量中。接着,我们定义了一个二维数组 `daysOfMonth`,用于存储每个月的天数。其中,第二维分别表示平年和闰年的天数。然后,我们定义了一个函数 `isLeap`,用于判断某一年是否为闰年。闰年的判断规则与 Python 代码中的一致。
接下来,我们使用一个循环,将该日期之前的所有天数加起来。最后,如果该年是闰年,并且该日期在3月1日之后,那么需要将天数加1。最后,输出计算得到的天数即可。
希望我的回答能够帮助到您!
阅读全文