以 年-月-日 的形式给定一个日期,计算给定的日期是当年第几天。注意闰年二月有 29天。
输入:2021-12-31
输出:365
输入:2022-01-01
输出:1
我们不能直接使用 cin 或 scanf ,因为连接的是“-”
- #include
// 头文件 -
- using namespace std; // 命名空间
-
- int a, b, c; // 年,月,日
- int t[] = {0, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31}; // 每月天数,口诀:一三五七八十腊,三十一天永不差
- int cnt; // 用来统计天数
- string s; // 输入的字符串
-
- int main() {
- cin >> s;
- a = (s[0] - 48) * 1000 + (s[1] - 48) * 100 + (s[2] - 48) * 10 + (s[3] - 48); // 提取年
- b = (s[5] - 48) * 10 + (s[6] - 48); // 提取月
- c = (s[8] - 48) * 10 + (s[9] - 48); // 提取日
- if(a % 4 == 0) if(a % 100 != 0 || a % 400 == 0) // 如果是闰年
- t[2]++; // 二月天数+1
- for(int i = 1; i <= b - 1; i++) cnt += t[i]; // 统计整月的天数
- cnt += c; // 不整月的天数
- cout << cnt; // 输出
- return 0;
- }